From 6bbc231cc8204e9335b3bcfa5c150c9263ea7bd5 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Mon, 21 Apr 2025 16:59:59 -0700 Subject: [PATCH 1/8] Defer execution of main until resume for hot restart with DDC library bundle format pause_isolates_on_start tells DWDS and the client that during a hot restart or a hot reload, the VM service will pause and is actively waiting for the client to remove existing breakpoints, reregister them, and then resume. It lets the client know by sending a kPausePostRequest event. In order to do this in DWDS, we need to defer the execution of main until that resume. So, like we do with the require restarter, we wait for a completer to finish before we call main after a hot restart. This completer is only provided when the flag is enabled. Fixes existing code that marks the completer as completed before running main. The previous code canceled the subscription in an unawaited Future. This may result in us recalling main because the event stream could still have a listener. An example is if we hit a breakpoint immediately after main and call resume. Also fixes an issue where metadata information isn't recomputed on a hot restart. This is needed when new files are added. Adds tests for: - Modifying a line with a breakpoint and restarting. - Adding a line before a breakpoint and restarting. - Removing a line before a breakpoint and restarting. - Adding a file and putting a breakpoint in it before restarting. --- dwds/lib/src/dwds_vm_client.dart | 17 +- dwds/lib/src/handlers/dev_handler.dart | 13 +- dwds/lib/src/injected/client.js | 799 ++++++++---------- .../src/services/chrome_proxy_service.dart | 14 +- dwds/test/common/hot_restart_common.dart | 204 ++--- dwds/test/fixtures/context.dart | 10 + dwds/test/fixtures/project.dart | 8 + dwds/test/hot_restart_breakpoints_test.dart | 312 +++++++ .../ddc_library_bundle_restarter.dart | 24 + .../_testHotRestartBreakpoints/pubspec.yaml | 9 + .../_testHotRestartBreakpoints/web/index.html | 7 + .../_testHotRestartBreakpoints/web/main.dart | 12 + 12 files changed, 844 insertions(+), 585 deletions(-) create mode 100644 dwds/test/hot_restart_breakpoints_test.dart create mode 100644 fixtures/_testHotRestartBreakpoints/pubspec.yaml create mode 100644 fixtures/_testHotRestartBreakpoints/web/index.html create mode 100644 fixtures/_testHotRestartBreakpoints/web/main.dart diff --git a/dwds/lib/src/dwds_vm_client.dart b/dwds/lib/src/dwds_vm_client.dart index 3498b5c34..34285c718 100644 --- a/dwds/lib/src/dwds_vm_client.dart +++ b/dwds/lib/src/dwds_vm_client.dart @@ -9,7 +9,6 @@ import 'package:dwds/src/events.dart'; import 'package:dwds/src/services/chrome_debug_exception.dart'; import 'package:dwds/src/services/chrome_proxy_service.dart'; import 'package:dwds/src/services/debug_service.dart'; -import 'package:dwds/src/utilities/shared.dart'; import 'package:dwds/src/utilities/synchronized.dart'; import 'package:logging/logging.dart'; import 'package:uuid/uuid.dart'; @@ -443,24 +442,14 @@ Future> _hotRestart( } void _waitForResumeEventToRunMain(ChromeProxyService chromeProxyService) { - final issuedReadyToRunMainCompleter = Completer(); - - final resumeEventsSubscription = chromeProxyService - .resumeAfterRestartEventsStream + StreamSubscription? resumeEventsSubscription; + resumeEventsSubscription = chromeProxyService.resumeAfterRestartEventsStream .listen((_) async { + await resumeEventsSubscription!.cancel(); await chromeProxyService.inspector.jsEvaluate( '\$dartReadyToRunMain();', ); - if (!issuedReadyToRunMainCompleter.isCompleted) { - issuedReadyToRunMainCompleter.complete(); - } }); - - safeUnawaited( - issuedReadyToRunMainCompleter.future.then((_) { - resumeEventsSubscription.cancel(); - }), - ); } Future> _fullReload( diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart index 0f1f6d435..329777540 100644 --- a/dwds/lib/src/handlers/dev_handler.dart +++ b/dwds/lib/src/handlers/dev_handler.dart @@ -538,18 +538,11 @@ class DevHandler { Stream resumeEventsStream, Completer readyToRunMainCompleter, ) { - final resumeEventsSubscription = resumeEventsStream.listen((_) { + StreamSubscription? resumeEventsSubscription; + resumeEventsSubscription = resumeEventsStream.listen((_) async { + await resumeEventsSubscription!.cancel(); readyToRunMainCompleter.complete(); - if (!readyToRunMainCompleter.isCompleted) { - readyToRunMainCompleter.complete(); - } }); - - safeUnawaited( - readyToRunMainCompleter.future.then((_) { - resumeEventsSubscription.cancel(); - }), - ); } void _handleIsolateExit(AppConnection appConnection) { diff --git a/dwds/lib/src/injected/client.js b/dwds/lib/src/injected/client.js index e4aabe827..e1e788f3c 100644 --- a/dwds/lib/src/injected/client.js +++ b/dwds/lib/src/injected/client.js @@ -1,4 +1,4 @@ -// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.9.0-97.0.dev. +// Generated by dart2js (, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.9.0-152.0.dev. // The code supports the following hooks: // dartPrint(message): // if this function is defined it is called instead of the Dart [print] @@ -125,7 +125,9 @@ return finalValue; }; } - function makeConstList(list) { + function makeConstList(list, rti) { + if (rti != null) + A._setArrayType(list, rti); list.$flags = 7; return list; } @@ -386,22 +388,6 @@ return J.UnknownJavaScriptObject.prototype; return receiver; }, - getInterceptor$x(receiver) { - if (receiver == null) - return receiver; - if (typeof receiver != "object") { - if (typeof receiver == "function") - return J.JavaScriptFunction.prototype; - if (typeof receiver == "symbol") - return J.JavaScriptSymbol.prototype; - if (typeof receiver == "bigint") - return J.JavaScriptBigInt.prototype; - return receiver; - } - if (receiver instanceof A.Object) - return receiver; - return J.getNativeInterceptor(receiver); - }, set$length$asx(receiver, value) { return J.getInterceptor$asx(receiver).set$length(receiver, value); }, @@ -452,9 +438,6 @@ allMatches$2$s(receiver, a0, a1) { return J.getInterceptor$s(receiver).allMatches$2(receiver, a0, a1); }, - asUint8List$2$x(receiver, a0, a1) { - return J.getInterceptor$x(receiver).asUint8List$2(receiver, a0, a1); - }, cast$1$0$ax(receiver, $T1) { return J.getInterceptor$ax(receiver).cast$1$0(receiver, $T1); }, @@ -1754,6 +1737,9 @@ getIsolateAffinityTag($name) { return init.getIsolateTag($name); }, + staticInteropGlobalContext() { + return init.G; + }, defineProperty(obj, property, value) { Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true}); }, @@ -1975,8 +1961,7 @@ if (receiver === "") return replacement; $length = receiver.length; - t1 = "" + replacement; - for (i = 0; i < $length; ++i) + for (t1 = replacement, i = 0; i < $length; ++i) t1 = t1 + receiver[i] + replacement; return t1.charCodeAt(0) == 0 ? t1 : t1; } @@ -2232,9 +2217,6 @@ this._name = t0; this.__late_helper$_value = null; }, - _checkLength($length) { - return $length; - }, _ensureNativeList(list) { var t1, result, i; if (type$.JSIndexable_dynamic._is(list)) @@ -2277,9 +2259,6 @@ }, NativeTypedData: function NativeTypedData() { }, - _UnmodifiableNativeByteBufferView: function _UnmodifiableNativeByteBufferView(t0) { - this.__native_typed_data$_data = t0; - }, NativeByteData: function NativeByteData() { }, NativeTypedArray: function NativeTypedArray() { @@ -2573,47 +2552,56 @@ return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false)); }, _installSpecializedIsTest(object) { - var kind, isFn, $name, predicate, testRti = this; - if (testRti === type$.Object) - return A._finishIsFn(testRti, object, A._isObject); + var testRti = this; + testRti._is = A._specializedIsTest(testRti); + return testRti._is(object); + }, + _specializedIsTest(testRti) { + var kind, simpleIsFn, $name, predicate, t2, + t1 = type$.Object; + if (testRti === t1) + return A._isObject; if (A.isTopType(testRti)) - return A._finishIsFn(testRti, object, A._isTop); + return A._isTop; kind = testRti._kind; if (kind === 6) - return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation); + return A._generalNullableIsTestImplementation; if (kind === 1) - return A._finishIsFn(testRti, object, A._isNever); + return A._isNever; if (kind === 7) - return A._finishIsFn(testRti, object, A._isFutureOr); - if (testRti === type$.int) - isFn = A._isInt; - else if (testRti === type$.double || testRti === type$.num) - isFn = A._isNum; - else if (testRti === type$.String) - isFn = A._isString; - else - isFn = testRti === type$.bool ? A._isBool : null; - if (isFn != null) - return A._finishIsFn(testRti, object, isFn); + return A._isFutureOr; + simpleIsFn = A._simpleSpecializedIsTest(testRti); + if (simpleIsFn != null) + return simpleIsFn; if (kind === 8) { $name = testRti._primary; if (testRti._rest.every(A.isTopType)) { testRti._specializedTestResource = "$is" + $name; if ($name === "List") - return A._finishIsFn(testRti, object, A._isListTestViaProperty); + return A._isListTestViaProperty; if (testRti === type$.JSObject) - return A._finishIsFn(testRti, object, A._isJSObject); - return A._finishIsFn(testRti, object, A._isTestViaProperty); + return A._isJSObject; + return A._isTestViaProperty; } } else if (kind === 10) { predicate = A.createRecordTypePredicate(testRti._primary, testRti._rest); - return A._finishIsFn(testRti, object, predicate == null ? A._isNever : predicate); + t2 = predicate == null ? A._isNever : predicate; + return t2 == null ? t1._as(t2) : t2; + } + return A._generalIsTestImplementation; + }, + _simpleSpecializedIsTest(testRti) { + if (testRti._kind === 8) { + if (testRti === type$.int) + return A._isInt; + if (testRti === type$.double || testRti === type$.num) + return A._isNum; + if (testRti === type$.String) + return A._isString; + if (testRti === type$.bool) + return A._isBool; } - return A._finishIsFn(testRti, object, A._generalIsTestImplementation); - }, - _finishIsFn(testRti, object, isFn) { - testRti._is = isFn; - return testRti._is(object); + return null; }, _installSpecializedAsCheck(object) { var testRti = this, @@ -2622,28 +2610,28 @@ asFn = A._asTop; else if (testRti === type$.Object) asFn = A._asObject; - else if (A.isNullable(testRti)) + else if (A.isNullable(testRti)) { asFn = A._generalNullableAsCheckImplementation; - if (testRti === type$.int) + if (testRti === type$.nullable_int) + asFn = A._asIntQ; + else if (testRti === type$.nullable_String) + asFn = A._asStringQ; + else if (testRti === type$.nullable_bool) + asFn = A._asBoolQ; + else if (testRti === type$.nullable_num) + asFn = A._asNumQ; + else if (testRti === type$.nullable_double) + asFn = A._asDoubleQ; + } else if (testRti === type$.int) asFn = A._asInt; - else if (testRti === type$.nullable_int) - asFn = A._asIntQ; else if (testRti === type$.String) asFn = A._asString; - else if (testRti === type$.nullable_String) - asFn = A._asStringQ; else if (testRti === type$.bool) asFn = A._asBool; - else if (testRti === type$.nullable_bool) - asFn = A._asBoolQ; else if (testRti === type$.num) asFn = A._asNum; - else if (testRti === type$.nullable_num) - asFn = A._asNumQ; else if (testRti === type$.double) asFn = A._asDouble; - else if (testRti === type$.nullable_double) - asFn = A._asDoubleQ; testRti._as = asFn; return testRti._as(object); }, @@ -2962,8 +2950,8 @@ }, _Universe_findErasedType(universe, cls) { var $length, erased, $arguments, i, $interface, - t1 = universe.eT, - probe = t1[cls]; + metadata = universe.eT, + probe = metadata[cls]; if (probe == null) return A._Universe_eval(universe, cls, false); else if (typeof probe == "number") { @@ -2973,7 +2961,7 @@ for (i = 0; i < $length; ++i) $arguments[i] = erased; $interface = A._Universe__lookupInterfaceRti(universe, cls, $arguments); - t1[cls] = $interface; + metadata[cls] = $interface; return $interface; } else return probe; @@ -2986,12 +2974,12 @@ }, _Universe_eval(universe, recipe, normalize) { var rti, - t1 = universe.eC, - probe = t1.get(recipe); + cache = universe.eC, + probe = cache.get(recipe); if (probe != null) return probe; rti = A._Parser_parse(A._Parser_create(universe, null, recipe, false)); - t1.set(recipe, rti); + cache.set(recipe, rti); return rti; }, _Universe_evalInEnvironment(universe, environment, recipe) { @@ -3250,97 +3238,97 @@ return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize}; }, _Parser_parse(parser) { - var t2, i, ch, t3, array, end, item, + var t1, i, ch, u, array, end, item, source = parser.r, - t1 = parser.s; - for (t2 = source.length, i = 0; i < t2;) { + stack = parser.s; + for (t1 = source.length, i = 0; i < t1;) { ch = source.charCodeAt(i); if (ch >= 48 && ch <= 57) - i = A._Parser_handleDigit(i + 1, ch, source, t1); + i = A._Parser_handleDigit(i + 1, ch, source, stack); else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124) - i = A._Parser_handleIdentifier(parser, i, source, t1, false); + i = A._Parser_handleIdentifier(parser, i, source, stack, false); else if (ch === 46) - i = A._Parser_handleIdentifier(parser, i, source, t1, true); + i = A._Parser_handleIdentifier(parser, i, source, stack, true); else { ++i; switch (ch) { case 44: break; case 58: - t1.push(false); + stack.push(false); break; case 33: - t1.push(true); + stack.push(true); break; case 59: - t1.push(A._Parser_toType(parser.u, parser.e, t1.pop())); + stack.push(A._Parser_toType(parser.u, parser.e, stack.pop())); break; case 94: - t1.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop())); + stack.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, stack.pop())); break; case 35: - t1.push(A._Universe__lookupTerminalRti(parser.u, 5, "#")); + stack.push(A._Universe__lookupTerminalRti(parser.u, 5, "#")); break; case 64: - t1.push(A._Universe__lookupTerminalRti(parser.u, 2, "@")); + stack.push(A._Universe__lookupTerminalRti(parser.u, 2, "@")); break; case 126: - t1.push(A._Universe__lookupTerminalRti(parser.u, 3, "~")); + stack.push(A._Universe__lookupTerminalRti(parser.u, 3, "~")); break; case 60: - t1.push(parser.p); - parser.p = t1.length; + stack.push(parser.p); + parser.p = stack.length; break; case 62: - A._Parser_handleTypeArguments(parser, t1); + A._Parser_handleTypeArguments(parser, stack); break; case 38: - A._Parser_handleExtendedOperations(parser, t1); + A._Parser_handleExtendedOperations(parser, stack); break; case 63: - t3 = parser.u; - t1.push(A._Universe__lookupQuestionRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n)); + u = parser.u; + stack.push(A._Universe__lookupQuestionRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n)); break; case 47: - t3 = parser.u; - t1.push(A._Universe__lookupFutureOrRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n)); + u = parser.u; + stack.push(A._Universe__lookupFutureOrRti(u, A._Parser_toType(u, parser.e, stack.pop()), parser.n)); break; case 40: - t1.push(-3); - t1.push(parser.p); - parser.p = t1.length; + stack.push(-3); + stack.push(parser.p); + parser.p = stack.length; break; case 41: - A._Parser_handleArguments(parser, t1); + A._Parser_handleArguments(parser, stack); break; case 91: - t1.push(parser.p); - parser.p = t1.length; + stack.push(parser.p); + parser.p = stack.length; break; case 93: - array = t1.splice(parser.p); + array = stack.splice(parser.p); A._Parser_toTypes(parser.u, parser.e, array); - parser.p = t1.pop(); - t1.push(array); - t1.push(-1); + parser.p = stack.pop(); + stack.push(array); + stack.push(-1); break; case 123: - t1.push(parser.p); - parser.p = t1.length; + stack.push(parser.p); + parser.p = stack.length; break; case 125: - array = t1.splice(parser.p); + array = stack.splice(parser.p); A._Parser_toTypesNamed(parser.u, parser.e, array); - parser.p = t1.pop(); - t1.push(array); - t1.push(-2); + parser.p = stack.pop(); + stack.push(array); + stack.push(-2); break; case 43: end = source.indexOf("(", i); - t1.push(source.substring(i, end)); - t1.push(-4); - t1.push(parser.p); - parser.p = t1.length; + stack.push(source.substring(i, end)); + stack.push(-4); + stack.push(parser.p); + parser.p = stack.length; i = end + 1; break; default: @@ -3348,7 +3336,7 @@ } } } - item = t1.pop(); + item = stack.pop(); return A._Parser_toType(parser.u, parser.e, item); }, _Parser_handleDigit(i, digit, source, stack) { @@ -3397,26 +3385,26 @@ }, _Parser_handleTypeArguments(parser, stack) { var base, - t1 = parser.u, + universe = parser.u, $arguments = A._Parser_collectArray(parser, stack), head = stack.pop(); if (typeof head == "string") - stack.push(A._Universe__lookupInterfaceRti(t1, head, $arguments)); + stack.push(A._Universe__lookupInterfaceRti(universe, head, $arguments)); else { - base = A._Parser_toType(t1, parser.e, head); + base = A._Parser_toType(universe, parser.e, head); switch (base._kind) { case 11: - stack.push(A._Universe__lookupGenericFunctionRti(t1, base, $arguments, parser.n)); + stack.push(A._Universe__lookupGenericFunctionRti(universe, base, $arguments, parser.n)); break; default: - stack.push(A._Universe__lookupBindingRti(t1, base, $arguments)); + stack.push(A._Universe__lookupBindingRti(universe, base, $arguments)); break; } } }, _Parser_handleArguments(parser, stack) { var requiredPositional, returnType, parameters, - t1 = parser.u, + universe = parser.u, head = stack.pop(), optionalPositional = null, named = null; if (typeof head == "number") @@ -3439,18 +3427,18 @@ case -3: head = stack.pop(); if (optionalPositional == null) - optionalPositional = t1.sEA; + optionalPositional = universe.sEA; if (named == null) - named = t1.sEA; - returnType = A._Parser_toType(t1, parser.e, head); + named = universe.sEA; + returnType = A._Parser_toType(universe, parser.e, head); parameters = new A._FunctionParameters(); parameters._requiredPositional = requiredPositional; parameters._optionalPositional = optionalPositional; parameters._named = named; - stack.push(A._Universe__lookupFunctionRti(t1, returnType, parameters)); + stack.push(A._Universe__lookupFunctionRti(universe, returnType, parameters)); return; case -4: - stack.push(A._Universe__lookupRecordRti(t1, stack.pop(), requiredPositional)); + stack.push(A._Universe__lookupRecordRti(universe, stack.pop(), requiredPositional)); return; default: throw A.wrapException(A.AssertionError$("Unexpected state under `()`: " + A.S(head))); @@ -3821,7 +3809,6 @@ return completer._future; }, _asyncAwait(object, bodyFunction) { - bodyFunction.toString; A._awaitOnObject(object, bodyFunction); }, _asyncReturn(object, completer) { @@ -7540,15 +7527,15 @@ _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $; }, JSAnyUtilityExtension_instanceOfString(_this, constructorName) { - var parts, $constructor, t1, t2, _i, part; + var parts, $constructor, t1, t2, _i, t3; if (constructorName.length === 0) return false; parts = constructorName.split("."); $constructor = init.G; - for (t1 = parts.length, t2 = type$.nullable_JSObject, _i = 0; _i < t1; ++_i) { - part = parts[_i]; - $constructor = t2._as($constructor[part]); - if ($constructor == null) + for (t1 = parts.length, t2 = type$.nullable_JSObject, _i = 0; _i < t1; ++_i, $constructor = t3) { + t3 = $constructor[parts[_i]]; + t2._as(t3); + if (t3 == null) return false; } return _this instanceof type$.JavaScriptFunction._as($constructor); @@ -7639,6 +7626,9 @@ return object; return new A.jsify__convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(object); }, + getProperty(o, $name, $T) { + return $T._as(o[$name]); + }, callConstructor(constr, $arguments, $T) { var args, factoryFunction; if ($arguments == null) @@ -7696,10 +7686,10 @@ A.checkTypeBound($T, type$.num, "T", "max"); return Math.max($T._as(a), $T._as(b)); }, - _JSRandom: function _JSRandom() { + Random_Random(seed) { + return B.C__JSRandom; }, - _JSSecureRandom: function _JSSecureRandom(t0) { - this._math$_buffer = t0; + _JSRandom: function _JSRandom() { }, AsyncMemoizer: function AsyncMemoizer(t0, t1) { this._async_memoizer$_completer = t0; @@ -8765,9 +8755,6 @@ _._finalized = false; }, Response_fromStream(response) { - return A.Response_fromStream$body(response); - }, - Response_fromStream$body(response) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.Response), $async$returnValue, body, t1, t2, t3, t4, t5, t6; @@ -8910,7 +8897,7 @@ break; } message = new A.StringBuffer(""); - t1 = "" + (method + "("); + t1 = method + "("; message._contents = t1; t2 = A._arrayInstanceType(args); t3 = t2._eval$1("SubListIterable<1>"); @@ -9431,7 +9418,8 @@ }, RNG: function RNG() { }, - CryptoRNG: function CryptoRNG() { + MathRNG: function MathRNG(t0) { + this._rnd = t0; }, UuidV1: function UuidV1(t0) { this.goptions = t0; @@ -9481,9 +9469,6 @@ this.handleData = t0; }, BrowserWebSocket_connect(url, protocols) { - return A.BrowserWebSocket_connect$body(url, protocols); - }, - BrowserWebSocket_connect$body(url, protocols) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.BrowserWebSocket), $async$returnValue, t1, t2, t3, t4, webSocket, browserSocket, webSocketConnected; @@ -9499,7 +9484,8 @@ t1 = init.G; t2 = t1.WebSocket; t3 = url.toString$0(0); - t1 = type$.JSArray_nullable_Object._as(new t1.Array()); + t1 = t1.Array; + t1 = type$.JSArray_nullable_Object._as(new t1()); t4 = type$.JSObject; webSocket = t4._as(new t2(t3, t1)); webSocket.binaryType = "arraybuffer"; @@ -9654,9 +9640,6 @@ } }, _authenticateUser(authUrl) { - return A._authenticateUser$body(authUrl); - }, - _authenticateUser$body(authUrl) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.bool), $async$returnValue, response, client; @@ -9745,15 +9728,16 @@ }); return A._asyncStartSync($async$handleWebSocketHotReloadRequest, $async$completer); }, - dartModuleStrategy() { - return A._asString(init.G.$dartModuleStrategy); - }, hotReloadSourcesPath() { var path = A._asStringQ(init.G.$hotReloadSourcesPath); if (path == null) throw A.wrapException(A.StateError$("Expected 'hotReloadSourcePath' to not be null in a hot reload.")); return path; }, + _isChromium() { + var t1 = type$.JSObject; + return B.JSString_methods.contains$1(A._asString(t1._as(t1._as(init.G.window).navigator).vendor), "Google"); + }, _authUrl() { var authUrl, extensionUrl = A._asStringQ(type$.JavaScriptObject._as(init.G.window).$dartExtensionUri); @@ -9830,9 +9814,6 @@ this.errorMessage = t2; }, _Debugger_maybeInvokeFlutterDisassemble(_this) { - return A._Debugger_maybeInvokeFlutterDisassemble$body(_this); - }, - _Debugger_maybeInvokeFlutterDisassemble$body(_this) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void), t1; @@ -9863,6 +9844,10 @@ DdcLibraryBundleRestarter: function DdcLibraryBundleRestarter() { this.__DdcLibraryBundleRestarter__sourcesAndLibrariesToReload_A = $; }, + DdcLibraryBundleRestarter_restart_closure: function DdcLibraryBundleRestarter_restart_closure(t0, t1) { + this.$this = t0; + this.readyToRunMain = t1; + }, DdcLibraryBundleRestarter_fetchLibrariesForHotReload_closure: function DdcLibraryBundleRestarter_fetchLibrariesForHotReload_closure(t0, t1) { this.xhr = t0; this.completer = t1; @@ -9880,9 +9865,6 @@ this._restarter = t1; }, SdkDeveloperExtension_maybeInvokeFlutterDisassemble(_this) { - return A.SdkDeveloperExtension_maybeInvokeFlutterDisassemble$body(_this); - }, - SdkDeveloperExtension_maybeInvokeFlutterDisassemble$body(_this) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void); var $async$SdkDeveloperExtension_maybeInvokeFlutterDisassemble = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { @@ -10019,8 +10001,7 @@ throw "Unable to print message: " + String(string); }, JSFunctionUnsafeUtilExtension_callAsConstructor(_this, arg1, $R) { - var t1 = [arg1]; - return $R._as(A.callConstructor(_this, t1, type$.JSObject)); + return $R._as(A.callConstructor(_this, [arg1], type$.JSObject)); }, groupBy(values, key, $S, $T) { var t1, _i, element, t2, t3, @@ -10381,7 +10362,6 @@ return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, map$1(receiver, f) { - f.toString; return this.map$1$1(receiver, f, type$.dynamic); }, join$1(receiver, separator) { @@ -10603,7 +10583,6 @@ return -1; }, indexWhere$1(receiver, test) { - test.toString; return this.indexWhere$2(receiver, test, 0); }, get$runtimeType(receiver) { @@ -11187,7 +11166,7 @@ call$0() { return A.Future_Future$value(null, type$.void); }, - $signature: 16 + $signature: 19 }; A.SentinelValue.prototype = {}; A.EfficientLengthIterable.prototype = {}; @@ -11247,7 +11226,6 @@ return new A.MappedListIterable(this, t1._bind$1($T)._eval$1("1(ListIterable.E)")._as(toElement), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, map$1(_, toElement) { - toElement.toString; return this.map$1$1(0, toElement, type$.dynamic); }, reduce$1(_, combine) { @@ -11443,7 +11421,6 @@ return new A.MappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(toElement), t1._eval$1("@<1>")._bind$1($T)._eval$1("MappedIterable<1,2>")); }, map$1(_, toElement) { - toElement.toString; return this.map$1$1(0, toElement, type$.dynamic); } }; @@ -11581,7 +11558,6 @@ return new A.EmptyIterable($T._eval$1("EmptyIterable<0>")); }, map$1(_, toElement) { - toElement.toString; return this.map$1$1(0, toElement, type$.dynamic); }, skip$1(_, count) { @@ -11690,7 +11666,6 @@ }, map$1(_, transform) { var t1 = type$.dynamic; - transform.toString; return this.map$2$1(0, transform, t1, t1); }, $isMap: 1 @@ -12289,13 +12264,13 @@ call$2(o, tag) { return this.getUnknownTag(o, tag); }, - $signature: 37 + $signature: 66 }; A.initHooks_closure1.prototype = { call$1(tag) { return this.prototypeForTag(A._asString(tag)); }, - $signature: 35 + $signature: 90 }; A._Record.prototype = { get$runtimeType(_) { @@ -12311,7 +12286,7 @@ var t2, separator, i, key, value, keys = this._fieldKeys$0(), values = this._getFieldValues$0(), - t1 = (safe ? "" + "Record " : "") + "("; + t1 = (safe ? "Record " : "") + "("; for (t2 = keys.length, separator = "", i = 0; i < t2; ++i, separator = ", ") { t1 += separator; key = keys[i]; @@ -12589,20 +12564,11 @@ get$runtimeType(receiver) { return B.Type_ByteBuffer_rqD; }, - asUint8List$2(receiver, offsetInBytes, $length) { - return $length == null ? new Uint8Array(receiver, offsetInBytes) : new Uint8Array(receiver, offsetInBytes, $length); - }, $isTrustedGetRuntimeType: 1, $isNativeByteBuffer: 1, $isByteBuffer: 1 }; A.NativeTypedData.prototype = { - get$buffer(receiver) { - if (((receiver.$flags | 0) & 2) !== 0) - return new A._UnmodifiableNativeByteBufferView(receiver.buffer); - else - return receiver.buffer; - }, _invalidPosition$3(receiver, position, $length, $name) { var t1 = A.RangeError$range(position, 0, $length, $name, null); throw A.wrapException(t1); @@ -12612,14 +12578,6 @@ this._invalidPosition$3(receiver, position, $length, $name); } }; - A._UnmodifiableNativeByteBufferView.prototype = { - asUint8List$2(_, offsetInBytes, $length) { - var result = A.NativeUint8List_NativeUint8List$view(this.__native_typed_data$_data, offsetInBytes, $length); - result.$flags = 3; - return result; - }, - $isByteBuffer: 1 - }; A.NativeByteData.prototype = { get$runtimeType(receiver) { return B.Type_ByteData_9dB; @@ -12883,7 +12841,7 @@ t2 = this.span; t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2); }, - $signature: 38 + $signature: 61 }; A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = { call$0() { @@ -12989,13 +12947,13 @@ call$2(error, stackTrace) { this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace))); }, - $signature: 56 + $signature: 52 }; A._wrapJsFunctionForAsync_closure.prototype = { call$2(errorCode, result) { this.$protected(A._asInt(errorCode), result); }, - $signature: 39 + $signature: 37 }; A.AsyncError.prototype = { toString$0(_) { @@ -13124,7 +13082,6 @@ return result; }, then$1$1(f, $R) { - f.toString; return this.then$1$2$onError(f, null, $R); }, _thenAwait$1$2(f, onError, $E) { @@ -13503,7 +13460,6 @@ return new A._MapStream(t1._bind$1($S)._eval$1("1(Stream.T)")._as(convert), this, t1._eval$1("@")._bind$1($S)._eval$1("_MapStream<1,2>")); }, map$1(_, convert) { - convert.toString; return this.map$1$1(0, convert, type$.dynamic); }, get$length(_) { @@ -14806,7 +14762,7 @@ t2._processUncaughtError$3(zone, type$.Object._as(e), t1._as(s)); } }, - $signature: 46 + $signature: 63 }; A._HashMap.prototype = { get$length(_) { @@ -15028,7 +14984,7 @@ call$1(v) { return this.K._is(v); }, - $signature: 14 + $signature: 12 }; A._HashMapKeyIterable.prototype = { get$length(_) { @@ -15109,7 +15065,7 @@ call$1(v) { return this.K._is(v); }, - $signature: 14 + $signature: 12 }; A._HashSet.prototype = { get$iterator(_) { @@ -15477,7 +15433,7 @@ call$2(k, v) { this.result.$indexSet(0, this.K._as(k), this.V._as(v)); }, - $signature: 31 + $signature: 23 }; A.ListBase.prototype = { get$iterator(receiver) { @@ -15513,7 +15469,6 @@ return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListBase.E)")._as(f), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, map$1(receiver, f) { - f.toString; return this.map$1$1(receiver, f, type$.dynamic); }, skip$1(receiver, count) { @@ -15639,7 +15594,6 @@ }, map$1(_, transform) { var t1 = type$.dynamic; - transform.toString; return this.map$2$1(0, transform, t1, t1); }, containsKey$1(key) { @@ -15671,7 +15625,7 @@ t2 = A.S(v); t1._contents += t2; }, - $signature: 33 + $signature: 24 }; A._UnmodifiableMapMixin.prototype = { $indexSet(_, key, value) { @@ -15717,7 +15671,6 @@ }, map$1(_, transform) { var t1 = type$.dynamic; - transform.toString; return this.map$2$1(0, transform, t1, t1); }, $isMap: 1 @@ -15876,7 +15829,6 @@ return new A.EfficientLengthMappedIterable(this, t1._bind$1($T)._eval$1("1(2)")._as(f), t1._eval$1("@<1>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>")); }, map$1(_, f) { - f.toString; return this.map$1$1(0, f, type$.dynamic); }, toString$0(_) { @@ -16324,7 +16276,7 @@ } return null; }, - $signature: 21 + $signature: 25 }; A._Utf8Decoder__decoderNonfatal_closure.prototype = { call$0() { @@ -16336,7 +16288,7 @@ } return null; }, - $signature: 21 + $signature: 25 }; A.AsciiCodec.prototype = { encode$1(source) { @@ -16839,7 +16791,7 @@ B.JSArray_methods.$indexSet(t1, t2.i++, key); B.JSArray_methods.$indexSet(t1, t2.i++, value); }, - $signature: 33 + $signature: 24 }; A._JsonStringStringifier.prototype = { get$_partialResult() { @@ -17521,7 +17473,7 @@ hash = hash + ((hash & 524287) << 10) & 536870911; return hash ^ hash >>> 6; }, - $signature: 27 + $signature: 26 }; A._BigIntImpl_hashCode_finish.prototype = { call$1(hash) { @@ -17529,7 +17481,7 @@ hash ^= hash >>> 11; return hash + ((hash & 16383) << 15) & 536870911; }, - $signature: 22 + $signature: 27 }; A.DateTime.prototype = { $eq(_, other) { @@ -17826,7 +17778,6 @@ return A.MappedIterable_MappedIterable(this, t1._bind$1($T)._eval$1("1(Iterable.E)")._as(toElement), t1._eval$1("Iterable.E"), $T); }, map$1(_, toElement) { - toElement.toString; return this.map$1$1(0, toElement, type$.dynamic); }, contains$1(_, element) { @@ -17948,13 +17899,13 @@ call$2(msg, position) { throw A.wrapException(A.FormatException$("Illegal IPv4 address, " + msg, this.host, position)); }, - $signature: 42 + $signature: 56 }; A.Uri_parseIPv6Address_error.prototype = { call$2(msg, position) { throw A.wrapException(A.FormatException$("Illegal IPv6 address, " + msg, this.host, position)); }, - $signature: 48 + $signature: 53 }; A.Uri_parseIPv6Address_parseHex.prototype = { call$2(start, end) { @@ -17966,7 +17917,7 @@ this.error.call$2("each part must be in the range of `0x0..0xFFFF`", start); return value; }, - $signature: 27 + $signature: 26 }; A._Uri.prototype = { get$_text() { @@ -17974,7 +17925,7 @@ value = _this.___Uri__text_FI; if (value === $) { t1 = _this.scheme; - t2 = t1.length !== 0 ? "" + t1 + ":" : ""; + t2 = t1.length !== 0 ? t1 + ":" : ""; t3 = _this._host; t4 = t3 == null; if (!t4 || t1 === "file") { @@ -18217,7 +18168,7 @@ A.throwExpression(A.UnsupportedError$(string$.Cannotn)); pathSegments = _this.get$pathSegments(); A._Uri__checkNonWindowsPathReservedCharacters(pathSegments, false); - t1 = A.StringBuffer__writeAll(B.JSString_methods.startsWith$1(_this.path, "/") ? "" + "/" : "", pathSegments, "/"); + t1 = A.StringBuffer__writeAll(B.JSString_methods.startsWith$1(_this.path, "/") ? "/" : "", pathSegments, "/"); t1 = t1.charCodeAt(0) == 0 ? t1 : t1; return t1; }, @@ -18267,7 +18218,7 @@ call$1(s) { return A._Uri__uriEncode(64, A._asString(s), B.C_Utf8Codec, false); }, - $signature: 15 + $signature: 13 }; A.UriData.prototype = { get$uri() { @@ -18593,7 +18544,7 @@ var t1 = type$.JavaScriptFunction; this._this.then$1$2$onError(new A.FutureOfJSAnyToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfJSAnyToJSPromise_get_toJS__closure0(t1._as(reject)), type$.nullable_Object); }, - $signature: 23 + $signature: 29 }; A.FutureOfJSAnyToJSPromise_get_toJS__closure.prototype = { call$1(value) { @@ -18601,7 +18552,7 @@ t1.call(t1, value); return value; }, - $signature: 10 + $signature: 11 }; A.FutureOfJSAnyToJSPromise_get_toJS__closure0.prototype = { call$2(error, stackTrace) { @@ -18626,14 +18577,14 @@ var t1 = type$.JavaScriptFunction; this._this.then$1$2$onError(new A.FutureOfVoidToJSPromise_get_toJS__closure(t1._as(resolve)), new A.FutureOfVoidToJSPromise_get_toJS__closure0(t1._as(reject)), type$.nullable_Object); }, - $signature: 23 + $signature: 29 }; A.FutureOfVoidToJSPromise_get_toJS__closure.prototype = { call$1(__wc0_formal) { var t1 = this.resolve; return t1.call(t1); }, - $signature: 52 + $signature: 46 }; A.FutureOfVoidToJSPromise_get_toJS__closure0.prototype = { call$2(error, stackTrace) { @@ -18676,7 +18627,7 @@ } else return o; }, - $signature: 10 + $signature: 11 }; A.promiseToFuture_closure.prototype = { call$1(r) { @@ -18742,7 +18693,7 @@ } return o; }, - $signature: 10 + $signature: 11 }; A.NullRejectionException.prototype = { toString$0(_) { @@ -18753,44 +18704,10 @@ A._JSRandom.prototype = { nextInt$1(max) { if (max <= 0 || max > 4294967296) - throw A.wrapException(A.RangeError$(string$.max_mu + max)); + throw A.wrapException(A.RangeError$("max must be in range 0 < max \u2264 2^32, was " + max)); return Math.random() * max >>> 0; - } - }; - A._JSSecureRandom.prototype = { - _JSSecureRandom$0() { - var $crypto = self.crypto; - if ($crypto != null) - if ($crypto.getRandomValues != null) - return; - throw A.wrapException(A.UnsupportedError$("No source of cryptographically secure random numbers available.")); }, - nextInt$1(max) { - var byteCount, t1, start, randomLimit, t2, t3, random, result; - if (max <= 0 || max > 4294967296) - throw A.wrapException(A.RangeError$(string$.max_mu + max)); - if (max > 255) - if (max > 65535) - byteCount = max > 16777215 ? 4 : 3; - else - byteCount = 2; - else - byteCount = 1; - t1 = this._math$_buffer; - t1.$flags & 2 && A.throwUnsupportedOperation(t1, 11); - t1.setUint32(0, 0, false); - start = 4 - byteCount; - randomLimit = A._asInt(Math.pow(256, byteCount)); - for (t2 = max - 1, t3 = (max & t2) >>> 0 === 0; true;) { - crypto.getRandomValues(J.asUint8List$2$x(B.NativeByteData_methods.get$buffer(t1), start, byteCount)); - random = t1.getUint32(0, false); - if (t3) - return (random & t2) >>> 0; - result = random % max; - if (random - result + max < randomLimit) - return result; - } - } + $isRandom: 1 }; A.AsyncMemoizer.prototype = {}; A.DelegatingStreamSink.prototype = { @@ -18953,7 +18870,7 @@ call$2(h, i) { return A._combine(A._asInt(h), J.get$hashCode$(i)); }, - $signature: 61 + $signature: 42 }; A.BuiltList.prototype = { toBuilder$0() { @@ -19004,7 +18921,6 @@ return new A.MappedListIterable(t1, t2._bind$1($T)._eval$1("1(2)")._as(this.$ti._bind$1($T)._eval$1("1(2)")._as(f)), t2._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>")); }, map$1(_, f) { - f.toString; return this.map$1$1(0, f, type$.dynamic); }, contains$1(_, element) { @@ -19506,7 +19422,7 @@ var t1 = this.$this.$ti; this.replacement.$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value)); }, - $signature: 31 + $signature: 23 }; A.BuiltSet.prototype = { get$hashCode(_) { @@ -19555,7 +19471,6 @@ return new A.EfficientLengthMappedIterable(t1, t2._bind$1($T)._eval$1("1(2)")._as(this.$ti._bind$1($T)._eval$1("1(2)")._as(f)), t2._eval$1("@<1>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>")); }, map$1(_, f) { - f.toString; return this.map$1$1(0, f, type$.dynamic); }, contains$1(_, element) { @@ -19880,14 +19795,13 @@ }; A.newBuiltValueToStringHelper_closure.prototype = { call$1(className) { - var t1 = new A.StringBuffer(""), - t2 = "" + className; - t1._contents = t2; - t1._contents = t2 + " {\n"; + var t1 = new A.StringBuffer(""); + t1._contents = className; + t1._contents = className + " {\n"; $._indentingBuiltValueToStringHelperIndent = $._indentingBuiltValueToStringHelperIndent + 2; return new A.IndentingBuiltValueToStringHelper(t1); }, - $signature: 63 + $signature: 39 }; A.IndentingBuiltValueToStringHelper.prototype = { add$2(_, field, value) { @@ -20020,34 +19934,34 @@ call$0() { return A.ListBuilder_ListBuilder(B.List_empty0, type$.Object); }, - $signature: 66 + $signature: 38 }; A.Serializers_Serializers_closure0.prototype = { call$0() { var t1 = type$.Object; return A.ListMultimapBuilder_ListMultimapBuilder(t1, t1); }, - $signature: 70 + $signature: 36 }; A.Serializers_Serializers_closure1.prototype = { call$0() { var t1 = type$.Object; return A.MapBuilder_MapBuilder(t1, t1); }, - $signature: 89 + $signature: 34 }; A.Serializers_Serializers_closure2.prototype = { call$0() { return A.SetBuilder_SetBuilder(type$.Object); }, - $signature: 105 + $signature: 35 }; A.Serializers_Serializers_closure3.prototype = { call$0() { var t1 = type$.Object; return A.SetMultimapBuilder_SetMultimapBuilder(t1, t1); }, - $signature: 36 + $signature: 89 }; A.FullType.prototype = { $eq(_, other) { @@ -20468,7 +20382,7 @@ call$1(value) { return this.serializers.deserialize$2$specifiedType(value, this.valueType); }, - $signature: 10 + $signature: 11 }; A.BuiltListSerializer.prototype = { serialize$3$specifiedType(serializers, builtList, specifiedType) { @@ -21185,7 +21099,6 @@ }, map$1(_, transform) { var t1 = type$.dynamic; - transform.toString; return this.map$2$1(0, transform, t1, t1); }, toString$0(_) { @@ -23653,13 +23566,13 @@ call$0() { return true; }, - $signature: 26 + $signature: 33 }; A.BatchedStreamController__hasEventDuring_closure.prototype = { call$0() { return false; }, - $signature: 26 + $signature: 33 }; A.SocketClient.prototype = {}; A.SseSocketClient.prototype = { @@ -23708,7 +23621,7 @@ type$.StackTrace._as(stackTrace); return $.$get$_logger().log$4(B.Level_WARNING_900, "Error in unawaited Future:", error, stackTrace); }, - $signature: 25 + $signature: 21 }; A.Int32.prototype = { _toInt$1(val) { @@ -23834,9 +23747,6 @@ A._StackState.prototype = {}; A.BaseClient.prototype = { _sendUnstreamed$3(method, url, headers) { - return this._sendUnstreamed$body$BaseClient(method, url, headers); - }, - _sendUnstreamed$body$BaseClient(method, url, headers) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.Response), $async$returnValue, $async$self = this, request, $async$temp1; @@ -23897,9 +23807,6 @@ }; A.BrowserClient.prototype = { send$1(request) { - return this.send$body$BrowserClient(request); - }, - send$body$BrowserClient(request) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.StreamedResponse), $async$returnValue, $async$handler = 2, $async$errorStack = [], $async$next = [], $async$self = this, xhr, completer, bytes, t1, t2, header, t3; @@ -24041,7 +23948,7 @@ A.MediaType.prototype = { toString$0(_) { var buffer = new A.StringBuffer(""), - t1 = "" + this.type; + t1 = this.type; buffer._contents = t1; t1 += "/"; buffer._contents = t1; @@ -24112,7 +24019,7 @@ scanner.expectDone$0(); return A.MediaType$(t4, t5, parameters); }, - $signature: 34 + $signature: 48 }; A.MediaType_toString_closure.prototype = { call$2(attribute, value) { @@ -24137,7 +24044,7 @@ call$1(match) { return "\\" + A.S(match.$index(0, 0)); }, - $signature: 28 + $signature: 31 }; A.expectQuotedString_closure.prototype = { call$1(match) { @@ -24145,7 +24052,7 @@ t1.toString; return t1; }, - $signature: 28 + $signature: 31 }; A.Level.prototype = { $eq(_, other) { @@ -24193,7 +24100,7 @@ var record, _this = this, t1 = logLevel.value; if (t1 >= _this.get$level().value) { - if ((stackTrace == null || stackTrace === B._StringStackTrace_OdL) && t1 >= 2000) { + if (stackTrace == null && t1 >= 2000) { A.StackTrace_current(); if (error == null) logLevel.toString$0(0); @@ -24268,10 +24175,10 @@ parsed.root = t4; if (t2.needsSeparator$1(t4)) B.JSArray_methods.$indexSet(parsed.separators, 0, t2.get$separator()); - t4 = "" + parsed.toString$0(0); + t4 = parsed.toString$0(0); } else if (t2.rootLength$1(t5) > 0) { isAbsoluteAndNotRootRelative = !t2.isRootRelative$1(t5); - t4 = "" + t5; + t4 = t5; } else { t6 = t5.length; if (t6 !== 0) { @@ -24437,7 +24344,7 @@ t2 = t1.length; if (t2 === 0) return "."; - if (t2 > 1 && J.$eq$(B.JSArray_methods.get$last(t1), ".")) { + if (t2 > 1 && B.JSArray_methods.get$last(t1) === ".") { B.JSArray_methods.removeLast$0(pathParsed.parts); t1 = pathParsed.separators; if (0 >= t1.length) @@ -24468,20 +24375,20 @@ call$1(part) { return A._asString(part) !== ""; }, - $signature: 20 + $signature: 30 }; A.Context_split_closure.prototype = { call$1(part) { return A._asString(part).length !== 0; }, - $signature: 20 + $signature: 30 }; A._validateArgList_closure.prototype = { call$1(arg) { A._asStringQ(arg); return arg == null ? "null" : '"' + arg + '"'; }, - $signature: 53 + $signature: 106 }; A.InternalStyle.prototype = { getRoot$1(path) { @@ -24506,7 +24413,7 @@ var t1, t2, _this = this; while (true) { t1 = _this.parts; - if (!(t1.length !== 0 && J.$eq$(B.JSArray_methods.get$last(t1), ""))) + if (!(t1.length !== 0 && B.JSArray_methods.get$last(t1) === "")) break; B.JSArray_methods.removeLast$0(_this.parts); t1 = _this.separators; @@ -24554,13 +24461,13 @@ toString$0(_) { var t2, t3, t4, t5, i, t1 = this.root; - t1 = t1 != null ? "" + t1 : ""; + t1 = t1 != null ? t1 : ""; for (t2 = this.parts, t3 = t2.length, t4 = this.separators, t5 = t4.length, i = 0; i < t3; ++i) { if (!(i < t5)) return A.ioore(t4, i); t1 = t1 + t4[i] + t2[i]; } - t1 += A.S(B.JSArray_methods.get$last(t4)); + t1 += B.JSArray_methods.get$last(t4); return t1.charCodeAt(0) == 0 ? t1 : t1; }, set$parts(parts) { @@ -25391,7 +25298,7 @@ var t1 = type$._Highlight._as(highlight).span; return t1.get$start().get$line() !== t1.get$end().get$line(); }, - $signature: 19 + $signature: 15 }; A.Highlighter$__closure0.prototype = { call$1(line) { @@ -25460,14 +25367,14 @@ call$1(highlight) { return type$._Highlight._as(highlight).span.get$end().get$line() < this.line.number; }, - $signature: 19 + $signature: 15 }; A.Highlighter_highlight_closure.prototype = { call$1(highlight) { type$._Highlight._as(highlight); return true; }, - $signature: 19 + $signature: 15 }; A.Highlighter__writeFileStart_closure.prototype = { call$0() { @@ -25568,7 +25475,7 @@ t4 = B.JSString_methods.$mul("^", Math.max(endColumn + (tabsBefore + tabsInside) * 3 - startColumn, 1)); return (t2._contents += t4).length - t3.length; }, - $signature: 30 + $signature: 22 }; A.Highlighter__writeIndicator_closure0.prototype = { call$0() { @@ -25589,7 +25496,7 @@ t1._writeArrow$3$beginning(_this.line, Math.max(_this.highlight.span.get$end().get$column() - 1, 0), false); return t2._contents.length - t3.length; }, - $signature: 30 + $signature: 22 }; A.Highlighter__writeSidebar_closure.prototype = { call$0() { @@ -25608,7 +25515,7 @@ A._Highlight.prototype = { toString$0(_) { var t1 = this.span; - t1 = "" + "primary " + ("" + t1.get$start().get$line() + ":" + t1.get$start().get$column() + "-" + t1.get$end().get$line() + ":" + t1.get$end().get$column()); + t1 = "primary " + ("" + t1.get$start().get$line() + ":" + t1.get$start().get$column() + "-" + t1.get$end().get$line() + ":" + t1.get$end().get$column()); return t1.charCodeAt(0) == 0 ? t1 : t1; } }; @@ -25745,7 +25652,7 @@ toString$0(_) { var t3, t4, highlight, t1 = this._span, - t2 = "" + ("line " + (t1.get$start().get$line() + 1) + ", column " + (t1.get$start().get$column() + 1)); + t2 = "line " + (t1.get$start().get$line() + 1) + ", column " + (t1.get$start().get$column() + 1); if (t1.get$sourceUrl() != null) { t3 = t1.get$sourceUrl(); t4 = $.$get$context(); @@ -26000,25 +25907,25 @@ call$1(bitCount) { return this.random.nextInt$1(B.JSInt_methods._shlPositive$1(1, bitCount)); }, - $signature: 22 + $signature: 27 }; A.generateUuidV4_printDigits.prototype = { call$2(value, count) { return B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1(value, 16), count, "0"); }, - $signature: 32 + $signature: 20 }; A.generateUuidV4_bitsDigits.prototype = { call$2(bitCount, digitCount) { return this.printDigits.call$2(this.generateBits.call$1(bitCount), digitCount); }, - $signature: 32 + $signature: 20 }; A.GuaranteeChannel.prototype = { GuaranteeChannel$3$allowSinkErrors(innerSink, allowSinkErrors, _box_0, $T) { var _this = this, t1 = _this.$ti, - t2 = t1._eval$1("_GuaranteeSink<1>")._as(new A._GuaranteeSink(innerSink, _this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void), allowSinkErrors, $T._eval$1("_GuaranteeSink<0>"))); + t2 = t1._eval$1("_GuaranteeSink<1>")._as(new A._GuaranteeSink(innerSink, _this, new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_dynamic), type$._AsyncCompleter_dynamic), allowSinkErrors, $T._eval$1("_GuaranteeSink<0>"))); _this.__GuaranteeChannel__sink_F !== $ && A.throwLateFieldAI("_sink"); _this.__GuaranteeChannel__sink_F = t2; t1 = t1._eval$1("StreamController<1>")._as(A.StreamController_StreamController(null, new A.GuaranteeChannel_closure(_box_0, _this, $T), true, $T)); @@ -26191,30 +26098,30 @@ } }; A.RNG.prototype = {}; - A.CryptoRNG.prototype = { + A.MathRNG.prototype = { _generateInternal$0() { - var i, k, t1, t2, + var t1, i, k, t2, t3, b = new Uint8Array(16); - for (i = 0; i < 16; i += 4) { - k = $.$get$CryptoRNG__secureRandom().nextInt$1(B.JSNumber_methods.toInt$0(Math.pow(2, 32))); + for (t1 = this._rnd, i = 0; i < 16; i += 4) { + k = t1.nextInt$1(B.JSNumber_methods.toInt$0(Math.pow(2, 32))); if (!(i < 16)) return A.ioore(b, i); b[i] = k; - t1 = i + 1; - t2 = B.JSInt_methods._shrOtherPositive$1(k, 8); - if (!(t1 < 16)) - return A.ioore(b, t1); - b[t1] = t2; - t2 = i + 2; - t1 = B.JSInt_methods._shrOtherPositive$1(k, 16); + t2 = i + 1; + t3 = B.JSInt_methods._shrOtherPositive$1(k, 8); if (!(t2 < 16)) return A.ioore(b, t2); - b[t2] = t1; - t1 = i + 3; - t2 = B.JSInt_methods._shrOtherPositive$1(k, 24); - if (!(t1 < 16)) - return A.ioore(b, t1); - b[t1] = t2; + b[t2] = t3; + t3 = i + 2; + t2 = B.JSInt_methods._shrOtherPositive$1(k, 16); + if (!(t3 < 16)) + return A.ioore(b, t3); + b[t3] = t2; + t2 = i + 3; + t3 = B.JSInt_methods._shrOtherPositive$1(k, 24); + if (!(t2 < 16)) + return A.ioore(b, t2); + b[t2] = t3; } return b; } @@ -26699,7 +26606,7 @@ }); return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 16 + $signature: 19 }; A.AdapterWebSocketChannel_closure0.prototype = { call$1(e) { @@ -26717,7 +26624,7 @@ t1 === $ && A.throwLateFieldNI("_sink"); t1.close$0(); }, - $signature: 88 + $signature: 69 }; A._WebSocketSink.prototype = {$isWebSocketSink: 1}; A.WebSocketChannelException.prototype = { @@ -26781,7 +26688,7 @@ $async$goto = 2; break; } - t3 = A.throwExpression(A.StateError$("Unknown module strategy: " + A.dartModuleStrategy())); + t3 = A.throwExpression(A.StateError$("Unknown module strategy: " + A.S(A.getProperty(A.staticInteropGlobalContext(), "$dartModuleStrategy", type$.String)))); case 2: // break $label0$0 manager = new A.ReloadingManager(client, t3); @@ -26807,7 +26714,7 @@ client.get$stream().listen$2$onError(new A.main__closure7(manager, client), new A.main__closure8()); if (A._asBool(t1.$dwdsEnableDevToolsLaunch)) A._EventStreamSubscription$(t2._as(t1.window), "keydown", type$.nullable_void_Function_JSObject._as(new A.main__closure9()), false, t2); - if (B.JSString_methods.contains$1(A._asString(t2._as(t2._as(t1.window).navigator).vendor), "Google")) { + if (A._isChromium()) { t1 = client.get$sink(); t2 = $.$get$serializers(); t3 = new A.ConnectRequestBuilder(); @@ -26822,19 +26729,19 @@ }); return A._asyncStartSync($async$call$0, $async$completer); }, - $signature: 16 + $signature: 19 }; A.main__closure.prototype = { call$0() { return A.FutureOfVoidToJSPromise_get_toJS(this.manager.hotReload$0()); }, - $signature: 11 + $signature: 10 }; A.main__closure0.prototype = { call$0() { return A.FutureOfJSAnyToJSPromise_get_toJS(this.manager._restarter.fetchLibrariesForHotReload$1(A.hotReloadSourcesPath()), type$.JSArray_nullable_Object); }, - $signature: 11 + $signature: 10 }; A.main__closure1.prototype = { call$2(runId, pauseIsolatesOnStart) { @@ -26924,7 +26831,7 @@ type$.nullable_void_Function_RegisterEventBuilder._as(new A.main___closure0(eventData)).call$1(t3); A._trySendEvent(t1, B.C_JsonCodec.encode$2$toEncodable(t2.serialize$1(t3._register_event$_build$0()), null), type$.dynamic); }, - $signature: 104 + $signature: 76 }; A.main___closure0.prototype = { call$1(b) { @@ -26937,11 +26844,9 @@ }; A.main__closure6.prototype = { call$0() { - var t3, - t1 = init.G, - t2 = type$.JSObject; - if (!B.JSString_methods.contains$1(A._asString(t2._as(t2._as(t1.window).navigator).vendor), "Google")) { - t2._as(t1.window).alert("Dart DevTools is only supported on Chromium based browsers."); + var t1, t2, t3; + if (!A._isChromium()) { + type$.JSObject._as(init.G.window).alert("Dart DevTools is only supported on Chromium based browsers."); return; } t1 = this.client.get$sink(); @@ -27132,7 +27037,7 @@ type$.StackTrace._as(stackTrace); A.print("Unhandled error detected in the injected client.js script.\n\nYou can disable this script in webdev by passing --no-injected-client if it\nis preventing your app from loading, but note that this will also prevent\nall debugging and hot reload/restart functionality from working.\n\nThe original error is below, please file an issue at\nhttps://github.com/dart-lang/webdev/issues/new and attach this output:\n\n" + A.S(error) + "\n" + stackTrace.toString$0(0) + "\n"); }, - $signature: 13 + $signature: 14 }; A._launchCommunicationWithDebugExtension_closure.prototype = { call$1(b) { @@ -27182,10 +27087,37 @@ $signature: 7 }; A.DdcLibraryBundleRestarter.prototype = { + _runMainWhenReady$2(readyToRunMain, runMain) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void); + var $async$_runMainWhenReady$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) + return A._asyncRethrow($async$result, $async$completer); + while (true) + switch ($async$goto) { + case 0: + // Function start + $async$goto = readyToRunMain != null ? 2 : 3; + break; + case 2: + // then + $async$goto = 4; + return A._asyncAwait(readyToRunMain, $async$_runMainWhenReady$2); + case 4: + // returning from await. + case 3: + // join + runMain.call(); + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$_runMainWhenReady$2, $async$completer); + }, restart$2$readyToRunMain$runId(readyToRunMain, runId) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.bool), - $async$returnValue, t1, t2; + $async$returnValue, $async$self = this, mainHandler, t1, t2; var $async$restart$2$readyToRunMain$runId = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); @@ -27199,6 +27131,8 @@ return A._asyncAwait(A._Debugger_maybeInvokeFlutterDisassemble(t2._as(t2._as(t1.dartDevEmbedder).debugger)), $async$restart$2$readyToRunMain$runId); case 3: // returning from await. + mainHandler = A._functionToJS1(new A.DdcLibraryBundleRestarter_restart_closure($async$self, readyToRunMain)); + t2._as(t2._as(t1.dartDevEmbedder).config).capturedMainHandler = mainHandler; $async$goto = 4; return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.dartDevEmbedder).hotRestart()), type$.nullable_Object), $async$restart$2$readyToRunMain$runId); case 4: @@ -27243,9 +27177,6 @@ return A._asyncStartSync($async$reload$0, $async$completer); }, fetchLibrariesForHotReload$1(hotReloadSourcesPath) { - return this.fetchLibrariesForHotReload$body$DdcLibraryBundleRestarter(hotReloadSourcesPath); - }, - fetchLibrariesForHotReload$body$DdcLibraryBundleRestarter(hotReloadSourcesPath) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.JSArray_nullable_Object), $async$returnValue, $async$self = this, t3, srcLibraries, filesToLoad, librariesToReload, t4, srcLibraryCast, libraries, t5, t1, t2, xhr, $async$temp1, $async$temp2, $async$temp3; @@ -27296,6 +27227,16 @@ }, $isRestarter: 1 }; + A.DdcLibraryBundleRestarter_restart_closure.prototype = { + call$1(runMain) { + var t1; + type$.JavaScriptFunction._as(runMain); + t1 = type$.JSObject; + t1._as(t1._as(init.G.dartDevEmbedder).config).capturedMainHandler = null; + A.safeUnawaited(this.$this._runMainWhenReady$2(this.readyToRunMain, runMain)); + }, + $signature: 83 + }; A.DdcLibraryBundleRestarter_fetchLibrariesForHotReload_closure.prototype = { call$0() { var t1 = this.xhr; @@ -27356,7 +27297,7 @@ this.sub.cancel$0(); return value; }, - $signature: 83 + $signature: 84 }; A.ReloadingManager.prototype = { hotRestart$2$readyToRunMain$runId(readyToRunMain, runId) { @@ -27503,7 +27444,7 @@ case 6: // join t2._as(t2._as(t1.$loadModuleConfig("dart_sdk")).dart).hotRestart(); - A.safeUnawaited($async$self._runMainWhenReady$1(readyToRunMain)); + A.safeUnawaited($async$self._require_restarter$_runMainWhenReady$1(readyToRunMain)); $async$returnValue = result; // goto return $async$goto = 1; @@ -27521,10 +27462,10 @@ fetchLibrariesForHotReload$1(hotReloadSourcesPath) { return A.throwExpression(A.UnimplementedError$(string$.Hot_reA)); }, - _runMainWhenReady$1(readyToRunMain) { + _require_restarter$_runMainWhenReady$1(readyToRunMain) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.void); - var $async$_runMainWhenReady$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + var $async$_require_restarter$_runMainWhenReady$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) return A._asyncRethrow($async$result, $async$completer); while (true) @@ -27536,7 +27477,7 @@ case 2: // then $async$goto = 4; - return A._asyncAwait(readyToRunMain, $async$_runMainWhenReady$1); + return A._asyncAwait(readyToRunMain, $async$_require_restarter$_runMainWhenReady$1); case 4: // returning from await. case 3: @@ -27546,7 +27487,7 @@ return A._asyncReturn(null, $async$completer); } }); - return A._asyncStartSync($async$_runMainWhenReady$1, $async$completer); + return A._asyncStartSync($async$_require_restarter$_runMainWhenReady$1, $async$completer); }, _getDigests$0() { var $async$goto = 0, @@ -27823,7 +27764,7 @@ call$1(e) { this.completer.completeError$2(new A.HotReloadFailedException(A._asString(type$.JavaScriptObject._as(e).message)), this.stackTrace); }, - $signature: 86 + $signature: 87 }; A._createScript_closure.prototype = { call$0() { @@ -27832,14 +27773,14 @@ return new A._createScript__closure(); return new A._createScript__closure0(nonce); }, - $signature: 87 + $signature: 88 }; A._createScript__closure.prototype = { call$0() { var t1 = type$.JSObject; return t1._as(t1._as(init.G.document).createElement("script")); }, - $signature: 11 + $signature: 10 }; A._createScript__closure0.prototype = { call$0() { @@ -27848,7 +27789,7 @@ scriptElement.setAttribute("nonce", this.nonce); return scriptElement; }, - $signature: 11 + $signature: 10 }; A.runMain_closure.prototype = { call$0() { @@ -27897,51 +27838,46 @@ _instance_1_i = hunkHelpers._instance_1i, _instance_0_u = hunkHelpers._instance_0u, _instance_1_u = hunkHelpers._instance_1u; - _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 29); - _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 12); - _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 12); - _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 12); + _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 28); + _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 16); + _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 16); + _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 16); _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0); _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 7); - _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 13); + _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 14); _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0); - _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 90, 0); + _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 91, 0); _static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) { - f.toString; return A._rootRun($self, $parent, zone, f, type$.dynamic); - }], 91, 0); + }], 92, 0); _static(A, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) { var t1 = type$.dynamic; - f.toString; return A._rootRunUnary($self, $parent, zone, f, arg, t1, t1); - }], 92, 0); - _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6"], ["_rootRunBinary"], 93, 0); + }], 93, 0); + _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6"], ["_rootRunBinary"], 94, 0); _static(A, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) { - f.toString; return A._rootRegisterCallback($self, $parent, zone, f, type$.dynamic); - }], 94, 0); + }], 95, 0); _static(A, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) { var t1 = type$.dynamic; - f.toString; return A._rootRegisterUnaryCallback($self, $parent, zone, f, t1, t1); - }], 95, 0); + }], 96, 0); _static(A, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) { var t1 = type$.dynamic; - f.toString; return A._rootRegisterBinaryCallback($self, $parent, zone, f, t1, t1, t1); - }], 96, 0); - _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 97, 0); - _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 98, 0); - _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 99, 0); - _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 100, 0); - _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 101, 0); - _static_1(A, "async___printToZone$closure", "_printToZone", 102); - _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 103, 0); - _instance(A._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 24, 0, 0); - _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 13); + }], 97, 0); + _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 98, 0); + _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 99, 0); + _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 100, 0); + _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 101, 0); + _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 102, 0); + _static_1(A, "async___printToZone$closure", "_printToZone", 103); + _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 104, 0); + _instance(A._Completer.prototype, "get$completeError", 0, 1, null, ["call$2", "call$1"], ["completeError$2", "completeError$1"], 32, 0, 0); + _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 14); var _; _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 9); - _instance(_, "get$addError", 0, 1, null, ["call$2", "call$1"], ["addError$2", "addError$1"], 24, 0, 0); + _instance(_, "get$addError", 0, 1, null, ["call$2", "call$1"], ["addError$2", "addError$1"], 32, 0, 0); _instance_0_u(_ = A._ControllerSubscription.prototype, "get$_onPause", "_onPause$0", 0); _instance_0_u(_, "get$_onResume", "_onResume$0", 0); _instance_0_u(_ = A._BufferingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0); @@ -27950,43 +27886,41 @@ _instance_0_u(_ = A._ForwardingStreamSubscription.prototype, "get$_onPause", "_onPause$0", 0); _instance_0_u(_, "get$_onResume", "_onResume$0", 0); _instance_1_u(_, "get$_handleData", "_handleData$1", 9); - _instance_2_u(_, "get$_handleError", "_handleError$2", 25); + _instance_2_u(_, "get$_handleError", "_handleError$2", 21); _instance_0_u(_, "get$_handleDone", "_handleDone$0", 0); - _static_2(A, "collection___defaultEquals$closure", "_defaultEquals0", 17); - _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 18); - _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 29); + _static_2(A, "collection___defaultEquals$closure", "_defaultEquals0", 18); + _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 17); + _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 28); _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 4); _instance_1_i(_ = A._ByteCallbackSink.prototype, "get$add", "add$1", 9); _instance_0_u(_, "get$close", "close$0", 0); - _static_1(A, "core__identityHashCode$closure", "identityHashCode", 18); - _static_2(A, "core__identical$closure", "identical", 17); - _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 15); + _static_1(A, "core__identityHashCode$closure", "identityHashCode", 17); + _static_2(A, "core__identical$closure", "identical", 18); + _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 13); _static(A, "math__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) { - a.toString; - b.toString; return A.max(a, b, type$.num); - }], 76, 0); - _instance_2_u(_ = A.DeepCollectionEquality.prototype, "get$equals", "equals$2", 17); - _instance_1_u(_, "get$hash", "hash$1", 18); - _instance_1_u(_, "get$isValidKey", "isValidKey$1", 14); + }], 105, 0); + _instance_2_u(_ = A.DeepCollectionEquality.prototype, "get$equals", "equals$2", 18); + _instance_1_u(_, "get$hash", "hash$1", 17); + _instance_1_u(_, "get$isValidKey", "isValidKey$1", 12); _static(A, "hot_reload_response_HotReloadResponse___new_tearOff$closure", 0, null, ["call$1", "call$0"], ["HotReloadResponse___new_tearOff", function() { return A.HotReloadResponse___new_tearOff(null); - }], 69, 0); - _static_1(A, "case_insensitive_map_CaseInsensitiveMap__canonicalizer$closure", "CaseInsensitiveMap__canonicalizer", 15); + }], 70, 0); + _static_1(A, "case_insensitive_map_CaseInsensitiveMap__canonicalizer$closure", "CaseInsensitiveMap__canonicalizer", 13); _instance_1_u(_ = A.SseClient.prototype, "get$_onIncomingControlMessage", "_onIncomingControlMessage$1", 2); _instance_1_u(_, "get$_onIncomingMessage", "_onIncomingMessage$1", 2); _instance_0_u(_, "get$_onOutgoingDone", "_onOutgoingDone$0", 0); _instance_1_u(_, "get$_onOutgoingMessage", "_onOutgoingMessage$1", 64); _static_1(A, "client___handleAuthRequest$closure", "_handleAuthRequest", 2); - _instance_1_u(_ = A.RequireRestarter.prototype, "get$_moduleParents", "_moduleParents$1", 84); - _instance_2_u(_, "get$_moduleTopologicalCompare", "_moduleTopologicalCompare$2", 85); + _instance_1_u(_ = A.RequireRestarter.prototype, "get$_moduleParents", "_moduleParents$1", 85); + _instance_2_u(_, "get$_moduleTopologicalCompare", "_moduleTopologicalCompare$2", 86); })(); (function inheritance() { var _mixin = hunkHelpers.mixin, _inherit = hunkHelpers.inherit, _inheritMany = hunkHelpers.inheritMany; _inherit(A.Object, null); - _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._UnmodifiableNativeByteBufferView, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A.TimeoutException, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._SyncStreamControllerDispatch, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A.SetBase, A._HashSetIterator, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._UnmodifiableMapMixin, A.MapView, A._ListQueueIterator, A._SplayTreeNode, A._SplayTree, A._SplayTreeIterator, A.Codec, A.Converter, A._Base64Encoder, A._Base64Decoder, A.ByteConversionSink, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A._BigIntImpl, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.IntegerDivisionByZeroException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.NullRejectionException, A._JSRandom, A._JSSecureRandom, A.AsyncMemoizer, A.DelegatingStreamSink, A.ErrorResult, A.ValueResult, A.StreamQueue, A._NextRequest, A._HasNextRequest, A.BuiltList, A.ListBuilder, A.BuiltListMultimap, A.ListMultimapBuilder, A.BuiltMap, A.MapBuilder, A.BuiltSet, A.SetBuilder, A.BuiltSetMultimap, A.SetMultimapBuilder, A.EnumClass, A.IndentingBuiltValueToStringHelper, A.JsonObject, A.FullType, A.BigIntSerializer, A.BoolSerializer, A.BuiltJsonSerializers, A.BuiltJsonSerializersBuilder, A.BuiltListMultimapSerializer, A.BuiltListSerializer, A.BuiltMapSerializer, A.BuiltSetMultimapSerializer, A.BuiltSetSerializer, A.DateTimeSerializer, A.DoubleSerializer, A.DurationSerializer, A.Int32Serializer, A.Int64Serializer, A.IntSerializer, A.JsonObjectSerializer, A.NullSerializer, A.NumSerializer, A.RegExpSerializer, A.StringSerializer, A.Uint8ListSerializer, A.UriSerializer, A.CanonicalizedMap, A.DefaultEquality, A.IterableEquality, A.ListEquality, A._UnorderedEquality, A._MapEntry, A.MapEquality, A.DeepCollectionEquality, A._QueueList_Object_ListMixin, A.BuildResult, A._$BuildStatusSerializer, A._$BuildResultSerializer, A.BuildResultBuilder, A.ConnectRequest, A._$ConnectRequestSerializer, A.ConnectRequestBuilder, A.DebugEvent, A.BatchedDebugEvents, A._$DebugEventSerializer, A._$BatchedDebugEventsSerializer, A.DebugEventBuilder, A.BatchedDebugEventsBuilder, A.DebugInfo, A._$DebugInfoSerializer, A.DebugInfoBuilder, A.DevToolsRequest, A.DevToolsResponse, A._$DevToolsRequestSerializer, A._$DevToolsResponseSerializer, A.DevToolsRequestBuilder, A.DevToolsResponseBuilder, A.ErrorResponse, A._$ErrorResponseSerializer, A.ErrorResponseBuilder, A.ExtensionRequest, A.ExtensionResponse, A.ExtensionEvent, A.BatchedEvents, A._$ExtensionRequestSerializer, A._$ExtensionResponseSerializer, A._$ExtensionEventSerializer, A._$BatchedEventsSerializer, A.ExtensionRequestBuilder, A.ExtensionResponseBuilder, A.ExtensionEventBuilder, A.BatchedEventsBuilder, A.HotReloadRequest, A._$HotReloadRequestSerializer, A.HotReloadRequestBuilder, A.HotReloadResponse, A._$HotReloadResponseSerializer, A.HotReloadResponseBuilder, A.IsolateExit, A.IsolateStart, A._$IsolateExitSerializer, A._$IsolateStartSerializer, A.IsolateExitBuilder, A.IsolateStartBuilder, A.RegisterEvent, A._$RegisterEventSerializer, A.RegisterEventBuilder, A.RunRequest, A._$RunRequestSerializer, A.BatchedStreamController, A.SocketClient, A.Int32, A.Int64, A._StackState, A.BaseClient, A.BaseRequest, A.BaseResponse, A.ClientException, A.MediaType, A.Level, A.LogRecord, A.Logger, A.Context, A.Style, A.ParsedPath, A.PathException, A.Pool, A.PoolResource, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.SourceSpanException, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController, A.StringScanner, A.RNG, A.UuidV1, A.EventStreamProvider, A._EventStreamSubscription, A.BrowserWebSocket, A.WebSocketEvent, A.WebSocketException, A.WebSocketChannelException, A.DdcLibraryBundleRestarter, A.DdcRestarter, A.ReloadingManager, A.HotReloadFailedException, A.RequireRestarter]); + _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, A.SafeToStringHook, J.ArrayIterator, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.EmptyIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A._Record, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.LinkedHashMapValueIterator, A.LinkedHashMapEntryIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A.TimeoutException, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._SyncStreamControllerDispatch, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._StreamSinkWrapper, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._DoneStreamSubscription, A._StreamIterator, A._ZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A.SetBase, A._HashSetIterator, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._UnmodifiableMapMixin, A.MapView, A._ListQueueIterator, A._SplayTreeNode, A._SplayTree, A._SplayTreeIterator, A.Codec, A.Converter, A._Base64Encoder, A._Base64Decoder, A.ByteConversionSink, A._JsonStringifier, A._Utf8Encoder, A._Utf8Decoder, A._BigIntImpl, A.DateTime, A.Duration, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.IntegerDivisionByZeroException, A.MapEntry, A.Null, A._StringStackTrace, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.NullRejectionException, A._JSRandom, A.AsyncMemoizer, A.DelegatingStreamSink, A.ErrorResult, A.ValueResult, A.StreamQueue, A._NextRequest, A._HasNextRequest, A.BuiltList, A.ListBuilder, A.BuiltListMultimap, A.ListMultimapBuilder, A.BuiltMap, A.MapBuilder, A.BuiltSet, A.SetBuilder, A.BuiltSetMultimap, A.SetMultimapBuilder, A.EnumClass, A.IndentingBuiltValueToStringHelper, A.JsonObject, A.FullType, A.BigIntSerializer, A.BoolSerializer, A.BuiltJsonSerializers, A.BuiltJsonSerializersBuilder, A.BuiltListMultimapSerializer, A.BuiltListSerializer, A.BuiltMapSerializer, A.BuiltSetMultimapSerializer, A.BuiltSetSerializer, A.DateTimeSerializer, A.DoubleSerializer, A.DurationSerializer, A.Int32Serializer, A.Int64Serializer, A.IntSerializer, A.JsonObjectSerializer, A.NullSerializer, A.NumSerializer, A.RegExpSerializer, A.StringSerializer, A.Uint8ListSerializer, A.UriSerializer, A.CanonicalizedMap, A.DefaultEquality, A.IterableEquality, A.ListEquality, A._UnorderedEquality, A._MapEntry, A.MapEquality, A.DeepCollectionEquality, A._QueueList_Object_ListMixin, A.BuildResult, A._$BuildStatusSerializer, A._$BuildResultSerializer, A.BuildResultBuilder, A.ConnectRequest, A._$ConnectRequestSerializer, A.ConnectRequestBuilder, A.DebugEvent, A.BatchedDebugEvents, A._$DebugEventSerializer, A._$BatchedDebugEventsSerializer, A.DebugEventBuilder, A.BatchedDebugEventsBuilder, A.DebugInfo, A._$DebugInfoSerializer, A.DebugInfoBuilder, A.DevToolsRequest, A.DevToolsResponse, A._$DevToolsRequestSerializer, A._$DevToolsResponseSerializer, A.DevToolsRequestBuilder, A.DevToolsResponseBuilder, A.ErrorResponse, A._$ErrorResponseSerializer, A.ErrorResponseBuilder, A.ExtensionRequest, A.ExtensionResponse, A.ExtensionEvent, A.BatchedEvents, A._$ExtensionRequestSerializer, A._$ExtensionResponseSerializer, A._$ExtensionEventSerializer, A._$BatchedEventsSerializer, A.ExtensionRequestBuilder, A.ExtensionResponseBuilder, A.ExtensionEventBuilder, A.BatchedEventsBuilder, A.HotReloadRequest, A._$HotReloadRequestSerializer, A.HotReloadRequestBuilder, A.HotReloadResponse, A._$HotReloadResponseSerializer, A.HotReloadResponseBuilder, A.IsolateExit, A.IsolateStart, A._$IsolateExitSerializer, A._$IsolateStartSerializer, A.IsolateExitBuilder, A.IsolateStartBuilder, A.RegisterEvent, A._$RegisterEventSerializer, A.RegisterEventBuilder, A.RunRequest, A._$RunRequestSerializer, A.BatchedStreamController, A.SocketClient, A.Int32, A.Int64, A._StackState, A.BaseClient, A.BaseRequest, A.BaseResponse, A.ClientException, A.MediaType, A.Level, A.LogRecord, A.Logger, A.Context, A.Style, A.ParsedPath, A.PathException, A.Pool, A.PoolResource, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.SourceSpanException, A.StreamChannelMixin, A._GuaranteeSink, A.StreamChannelController, A.StringScanner, A.RNG, A.UuidV1, A.EventStreamProvider, A._EventStreamSubscription, A.BrowserWebSocket, A.WebSocketEvent, A.WebSocketException, A.WebSocketChannelException, A.DdcLibraryBundleRestarter, A.DdcRestarter, A.ReloadingManager, A.HotReloadFailedException, A.RequireRestarter]); _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JavaScriptBigInt, J.JavaScriptSymbol, J.JSNumber, J.JSString]); _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData]); _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction]); @@ -27997,7 +27931,7 @@ _inheritMany(A._CastIterableBase, [A.CastIterable, A.__CastListBase__CastIterableBase_ListMixin]); _inherit(A._EfficientLengthCastIterable, A.CastIterable); _inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin); - _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure0, A.Stream_length_closure, A.Stream_first_closure0, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._CustomHashMap_closure, A._LinkedCustomHashMap_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.BuiltListMultimap_BuiltListMultimap_closure, A.BuiltListMultimap_hashCode_closure, A.ListMultimapBuilder_replace_closure, A.BuiltMap_BuiltMap_closure, A.BuiltMap_hashCode_closure, A.BuiltSet_hashCode_closure, A.BuiltSetMultimap_hashCode_closure, A.SetMultimapBuilder_replace_closure, A.newBuiltValueToStringHelper_closure, A.BuiltListMultimapSerializer_serialize_closure, A.BuiltListMultimapSerializer_deserialize_closure, A.BuiltListSerializer_serialize_closure, A.BuiltListSerializer_deserialize_closure, A.BuiltSetMultimapSerializer_serialize_closure, A.BuiltSetMultimapSerializer_deserialize_closure, A.BuiltSetSerializer_serialize_closure, A.BuiltSetSerializer_deserialize_closure, A.CanonicalizedMap_keys_closure, A.WebSocketClient_stream_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A.BrowserClient_send_closure0, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A.generateUuidV4_generateBits, A._GuaranteeSink__addError_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.AdapterWebSocketChannel_closure, A.AdapterWebSocketChannel__closure, A.AdapterWebSocketChannel__closure0, A.AdapterWebSocketChannel_closure0, A.main__closure1, A.main__closure3, A.main___closure2, A.main___closure1, A.main__closure5, A.main___closure0, A.main___closure, A.main__closure7, A.main__closure8, A.main__closure9, A.main__closure10, A._launchCommunicationWithDebugExtension_closure, A._handleAuthRequest_closure, A._sendResponse_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]); + _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A._Future_timeout_closure0, A.Stream_length_closure, A.Stream_first_closure0, A._CustomZone_bindUnaryCallback_closure, A._CustomZone_bindUnaryCallbackGuarded_closure, A._RootZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A.runZonedGuarded_closure, A._CustomHashMap_closure, A._LinkedCustomHashMap_closure, A._BigIntImpl_hashCode_finish, A._Uri__makePath_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure, A.FutureOfVoidToJSPromise_get_toJS__closure, A.jsify__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.dartify_convert, A.StreamQueue__ensureListening_closure, A.BuiltListMultimap_BuiltListMultimap_closure, A.BuiltListMultimap_hashCode_closure, A.ListMultimapBuilder_replace_closure, A.BuiltMap_BuiltMap_closure, A.BuiltMap_hashCode_closure, A.BuiltSet_hashCode_closure, A.BuiltSetMultimap_hashCode_closure, A.SetMultimapBuilder_replace_closure, A.newBuiltValueToStringHelper_closure, A.BuiltListMultimapSerializer_serialize_closure, A.BuiltListMultimapSerializer_deserialize_closure, A.BuiltListSerializer_serialize_closure, A.BuiltListSerializer_deserialize_closure, A.BuiltSetMultimapSerializer_serialize_closure, A.BuiltSetMultimapSerializer_deserialize_closure, A.BuiltSetSerializer_serialize_closure, A.BuiltSetSerializer_deserialize_closure, A.CanonicalizedMap_keys_closure, A.WebSocketClient_stream_closure, A.BaseRequest_closure0, A.BrowserClient_send_closure, A.BrowserClient_send_closure0, A.ByteStream_toBytes_closure, A.MediaType_toString__closure, A.expectQuotedString_closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.Pool__runOnRelease_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.SseClient_closure0, A.SseClient_closure1, A.generateUuidV4_generateBits, A._GuaranteeSink__addError_closure, A._EventStreamSubscription_closure, A._EventStreamSubscription_onData_closure, A.BrowserWebSocket_connect_closure, A.BrowserWebSocket_connect_closure0, A.BrowserWebSocket_connect_closure1, A.BrowserWebSocket_connect_closure2, A.AdapterWebSocketChannel_closure, A.AdapterWebSocketChannel__closure, A.AdapterWebSocketChannel__closure0, A.AdapterWebSocketChannel_closure0, A.main__closure1, A.main__closure3, A.main___closure2, A.main___closure1, A.main__closure5, A.main___closure0, A.main___closure, A.main__closure7, A.main__closure8, A.main__closure9, A.main__closure10, A._launchCommunicationWithDebugExtension_closure, A._handleAuthRequest_closure, A._sendResponse_closure, A.DdcLibraryBundleRestarter_restart_closure, A.DdcRestarter_restart_closure0, A.DdcRestarter_restart_closure, A.RequireRestarter__reloadModule_closure0, A.JSArrayExtension_toDartIterable_closure]); _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.ConstantMap_map_closure, A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure0, A._Future_timeout_closure1, A._BufferingStreamSubscription_asFuture_closure0, A.LinkedHashMap_LinkedHashMap$from_closure, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A._BigIntImpl_hashCode_combine, A.Uri__parseIPv4Address_error, A.Uri_parseIPv6Address_error, A.Uri_parseIPv6Address_parseHex, A.FutureOfJSAnyToJSPromise_get_toJS_closure, A.FutureOfJSAnyToJSPromise_get_toJS__closure0, A.FutureOfVoidToJSPromise_get_toJS_closure, A.FutureOfVoidToJSPromise_get_toJS__closure0, A.StreamQueue__ensureListening_closure1, A.hashObjects_closure, A.MapBuilder_replace_closure, A.CanonicalizedMap_addAll_closure, A.CanonicalizedMap_forEach_closure, A.CanonicalizedMap_map_closure, A.safeUnawaited_closure, A.BaseRequest_closure, A.MediaType_toString_closure, A.Pool__runOnRelease_closure0, A.Highlighter__collateLines_closure0, A.generateUuidV4_printDigits, A.generateUuidV4_bitsDigits, A.main__closure4, A.main_closure0]); _inherit(A.CastList, A._CastListBase); _inheritMany(A.MapBase, [A.CastMap, A.JsLinkedHashMap, A._HashMap, A._JsonMap]); @@ -28097,7 +28031,7 @@ _inherit(A.SourceSpanWithContext, A.SourceSpanBase); _inheritMany(A.StreamChannelMixin, [A.SseClient, A.GuaranteeChannel, A.AdapterWebSocketChannel]); _inherit(A.StringScannerException, A.SourceSpanFormatException); - _inherit(A.CryptoRNG, A.RNG); + _inherit(A.MathRNG, A.RNG); _inheritMany(A.WebSocketEvent, [A.TextDataReceived, A.BinaryDataReceived, A.CloseReceived]); _inherit(A.WebSocketConnectionClosed, A.WebSocketException); _inherit(A._WebSocketSink, A.DelegatingStreamSink); @@ -28119,7 +28053,7 @@ typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []}, mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List", Object: "Object", Map: "Map"}, mangledNames: {}, - types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "@(@)", "Null(Object,StackTrace)", "Null(@)", "~(@)", "Null(JSObject)", "~(Object?)", "Object?(Object?)", "JSObject()", "~(~())", "~(Object,StackTrace)", "bool(Object?)", "String(String)", "Future<~>()", "bool(Object?,Object?)", "int(Object?)", "bool(_Highlight)", "bool(String)", "@()", "int(int)", "Null(JavaScriptFunction,JavaScriptFunction)", "~(Object[StackTrace?])", "~(@,StackTrace)", "bool()", "int(int,int)", "String(Match)", "int(@,@)", "int()", "~(@,@)", "String(int,int)", "~(Object?,Object?)", "MediaType()", "@(String)", "SetMultimapBuilder()", "@(@,String)", "Null(~())", "~(int,@)", "ListBuilder()", "ListBuilder()", "~(String,int)", "String(@)", "bool(String,String)", "int(String)", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "~(List)", "~(String,int?)", "~(String,String)", "JSObject(Object,StackTrace)", "Logger()", "Object?(~)", "String(String?)", "String?()", "int(_Line)", "Null(@,StackTrace)", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry>)", "int(int,@)", "SourceSpanWithContext()", "IndentingBuiltValueToStringHelper(String)", "~(String?)", "Future()", "ListBuilder()", "Null(WebSocket)", "~(WebSocketEvent)", "HotReloadResponse([~(HotReloadResponseBuilder)])", "ListMultimapBuilder()", "JSObject(String[bool?])", "~(List)", "ListBuilder(BatchedDebugEventsBuilder)", "Null(String,String)", "DebugEventBuilder(DebugEventBuilder)", "0^(0^,0^)", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "Future<~>(String)", "ConnectRequestBuilder(ConnectRequestBuilder)", "DebugInfoBuilder(DebugInfoBuilder)", "~(bool)", "bool(bool)", "List(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "Null(Object)", "MapBuilder()", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)", "0^()(Zone,ZoneDelegate,Zone,0^())", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map?)", "Null(String)", "SetBuilder()"], + types: ["~()", "Null()", "~(JSObject)", "Object?(@)", "@(@)", "Null(Object,StackTrace)", "Null(@)", "~(@)", "Null(JSObject)", "~(Object?)", "JSObject()", "Object?(Object?)", "bool(Object?)", "String(String)", "~(Object,StackTrace)", "bool(_Highlight)", "~(~())", "int(Object?)", "bool(Object?,Object?)", "Future<~>()", "String(int,int)", "~(@,StackTrace)", "int()", "~(@,@)", "~(Object?,Object?)", "@()", "int(int,int)", "int(int)", "int(@,@)", "Null(JavaScriptFunction,JavaScriptFunction)", "bool(String)", "String(Match)", "~(Object[StackTrace?])", "bool()", "MapBuilder()", "SetBuilder()", "ListMultimapBuilder()", "~(int,@)", "ListBuilder()", "IndentingBuiltValueToStringHelper(String)", "ListBuilder()", "ListBuilder()", "int(int,@)", "String(@)", "bool(String,String)", "int(String)", "Object?(~)", "~(List)", "MediaType()", "~(String,String)", "JSObject(Object,StackTrace)", "Logger()", "Null(@,StackTrace)", "~(String,int?)", "String?()", "int(_Line)", "~(String,int)", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry>)", "Null(~())", "SourceSpanWithContext()", "~(Zone,ZoneDelegate,Zone,Object,StackTrace)", "~(String?)", "Future()", "@(@,String)", "Null(WebSocket)", "~(WebSocketEvent)", "Null(Object)", "HotReloadResponse([~(HotReloadResponseBuilder)])", "JSObject(String[bool?])", "~(List)", "ListBuilder(BatchedDebugEventsBuilder)", "Null(String,String)", "DebugEventBuilder(DebugEventBuilder)", "Null(String)", "RegisterEventBuilder(RegisterEventBuilder)", "DevToolsRequestBuilder(DevToolsRequestBuilder)", "Future<~>(String)", "ConnectRequestBuilder(ConnectRequestBuilder)", "DebugInfoBuilder(DebugInfoBuilder)", "~(bool)", "Null(JavaScriptFunction)", "bool(bool)", "List(String)", "int(String,String)", "Null(JavaScriptObject)", "JSObject()()", "SetMultimapBuilder()", "@(String)", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)", "0^()(Zone,ZoneDelegate,Zone,0^())", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "~(String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map?)", "0^(0^,0^)", "String(String?)"], interceptorsByTag: null, leafTags: null, arrayRti: Symbol("$ti"), @@ -28127,7 +28061,7 @@ "2;libraries,sources": (t1, t2) => o => o instanceof A._Record_2_libraries_sources && t1._is(o._0) && t2._is(o._1) } }; - A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[]},"JSArraySafeToStringHook":{"SafeToStringHook":[]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"Pattern":[],"JSIndexable":["@"],"TrustedGetRuntimeType":[]},"_CastIterableBase":{"Iterable":["2"]},"CastIterator":{"Iterator":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","Iterable.E":"2"},"CastMap":{"MapBase":["3","4"],"Map":["3","4"],"MapBase.K":"3","MapBase.V":"4"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","Iterable.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterator":{"Iterator":["1"]},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_Record_2_libraries_sources":{"_Record2":[],"_Record":[]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"LinkedHashMapValuesIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapValueIterator":{"Iterator":["1"]},"LinkedHashMapEntriesIterable":{"EfficientLengthIterable":["MapEntry<1,2>"],"Iterable":["MapEntry<1,2>"],"Iterable.E":"MapEntry<1,2>"},"LinkedHashMapEntryIterator":{"Iterator":["MapEntry<1,2>"]},"JsIdentityLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_Record2":{"_Record":[]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeByteBuffer":{"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JavaScriptObject":[],"JSObject":[]},"_UnmodifiableNativeByteBufferView":{"ByteBuffer":[]},"NativeByteData":{"JavaScriptObject":[],"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JavaScriptObject":[],"JSObject":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"Float32List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeFloat64List":{"Float64List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"Int16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"Int32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"Int8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"Uint16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"Uint32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"Uint8ClampedList":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"Uint8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"_Type":{"Type":[]},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"StreamView":{"Stream":["1"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_MapStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_SplayTreeSetNode":{"_SplayTreeNode":["1","_SplayTreeSetNode<1>"],"_SplayTreeNode.K":"1","_SplayTreeNode.1":"_SplayTreeSetNode<1>"},"_HashMap":{"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_CustomHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedCustomHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashSetIterator":{"Iterator":["1"]},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_LinkedHashSetIterator":{"Iterator":["1"]},"UnmodifiableListView":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","Iterable.E":"1","UnmodifiableListMixin.E":"1"},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ListQueue":{"Queue":["1"],"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_ListQueueIterator":{"Iterator":["1"]},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SplayTreeIterator":{"Iterator":["3"]},"_SplayTreeKeyIterator":{"_SplayTreeIterator":["1","2","1"],"Iterator":["1"],"_SplayTreeIterator.K":"1","_SplayTreeIterator.T":"1","_SplayTreeIterator.1":"2"},"SplayTreeSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"_SplayTree":["1","_SplayTreeSetNode<1>"],"Iterable":["1"],"Iterable.E":"1","_SplayTree.1":"_SplayTreeSetNode<1>","_SplayTree.K":"1"},"Encoding":{"Codec":["String","List"]},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"AsciiEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"_UnicodeSubsetDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"AsciiDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"Base64Encoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Decoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Converter":{"StreamTransformer":["1","2"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"],"StreamTransformer":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"],"StreamTransformer":["String","Object?"]},"Latin1Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Latin1Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Latin1Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Utf8Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Utf8Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"BigInt":{"Comparable":["BigInt"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExp":{"Pattern":[]},"RegExpMatch":{"Match":[]},"Set":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Comparable":["String"],"Pattern":[]},"_BigIntImpl":{"BigInt":[],"Comparable":["BigInt"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"IntegerDivisionByZeroException":{"Exception":[],"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"NullRejectionException":{"Exception":[]},"DelegatingStreamSink":{"StreamSink":["1"]},"ErrorResult":{"Result":["0&"]},"ValueResult":{"Result":["1"]},"_NextRequest":{"_EventRequest":["1"]},"_HasNextRequest":{"_EventRequest":["1"]},"BuiltList":{"Iterable":["1"]},"_BuiltList":{"BuiltList":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltListMultimap":{"BuiltListMultimap":["1","2"]},"_BuiltMap":{"BuiltMap":["1","2"]},"BuiltSet":{"Iterable":["1"]},"_BuiltSet":{"BuiltSet":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltSetMultimap":{"BuiltSetMultimap":["1","2"]},"BuiltValueNullFieldError":{"Error":[]},"BuiltValueNestedFieldError":{"Error":[]},"BoolJsonObject":{"JsonObject":[]},"ListJsonObject":{"JsonObject":[]},"MapJsonObject":{"JsonObject":[]},"NumJsonObject":{"JsonObject":[]},"StringJsonObject":{"JsonObject":[]},"DeserializationError":{"Error":[]},"BigIntSerializer":{"PrimitiveSerializer":["BigInt"],"Serializer":["BigInt"]},"BoolSerializer":{"PrimitiveSerializer":["bool"],"Serializer":["bool"]},"BuiltJsonSerializers":{"Serializers":[]},"BuiltListMultimapSerializer":{"StructuredSerializer":["BuiltListMultimap<@,@>"],"Serializer":["BuiltListMultimap<@,@>"]},"BuiltListSerializer":{"StructuredSerializer":["BuiltList<@>"],"Serializer":["BuiltList<@>"]},"BuiltMapSerializer":{"StructuredSerializer":["BuiltMap<@,@>"],"Serializer":["BuiltMap<@,@>"]},"BuiltSetMultimapSerializer":{"StructuredSerializer":["BuiltSetMultimap<@,@>"],"Serializer":["BuiltSetMultimap<@,@>"]},"BuiltSetSerializer":{"StructuredSerializer":["BuiltSet<@>"],"Serializer":["BuiltSet<@>"]},"DateTimeSerializer":{"PrimitiveSerializer":["DateTime"],"Serializer":["DateTime"]},"DoubleSerializer":{"PrimitiveSerializer":["double"],"Serializer":["double"]},"DurationSerializer":{"PrimitiveSerializer":["Duration"],"Serializer":["Duration"]},"Int32Serializer":{"PrimitiveSerializer":["Int32"],"Serializer":["Int32"]},"Int64Serializer":{"PrimitiveSerializer":["Int64"],"Serializer":["Int64"]},"IntSerializer":{"PrimitiveSerializer":["int"],"Serializer":["int"]},"JsonObjectSerializer":{"PrimitiveSerializer":["JsonObject"],"Serializer":["JsonObject"]},"NullSerializer":{"PrimitiveSerializer":["Null"],"Serializer":["Null"]},"NumSerializer":{"PrimitiveSerializer":["num"],"Serializer":["num"]},"RegExpSerializer":{"PrimitiveSerializer":["RegExp"],"Serializer":["RegExp"]},"StringSerializer":{"PrimitiveSerializer":["String"],"Serializer":["String"]},"Uint8ListSerializer":{"PrimitiveSerializer":["Uint8List"],"Serializer":["Uint8List"]},"UriSerializer":{"PrimitiveSerializer":["Uri"],"Serializer":["Uri"]},"CanonicalizedMap":{"Map":["2","3"]},"DefaultEquality":{"Equality":["1"]},"IterableEquality":{"Equality":["Iterable<1>"]},"ListEquality":{"Equality":["List<1>"]},"_UnorderedEquality":{"Equality":["2"]},"SetEquality":{"_UnorderedEquality":["1","Set<1>"],"Equality":["Set<1>"],"_UnorderedEquality.E":"1","_UnorderedEquality.T":"Set<1>"},"MapEquality":{"Equality":["Map<1,2>"]},"DeepCollectionEquality":{"Equality":["@"]},"QueueList":{"ListBase":["1"],"List":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","QueueList.E":"1","Iterable.E":"1"},"_CastQueueList":{"QueueList":["2"],"ListBase":["2"],"List":["2"],"Queue":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","QueueList.E":"2","Iterable.E":"2"},"_$BuildStatusSerializer":{"PrimitiveSerializer":["BuildStatus"],"Serializer":["BuildStatus"]},"_$BuildResultSerializer":{"StructuredSerializer":["BuildResult"],"Serializer":["BuildResult"]},"_$BuildResult":{"BuildResult":[]},"_$ConnectRequestSerializer":{"StructuredSerializer":["ConnectRequest"],"Serializer":["ConnectRequest"]},"_$ConnectRequest":{"ConnectRequest":[]},"_$DebugEventSerializer":{"StructuredSerializer":["DebugEvent"],"Serializer":["DebugEvent"]},"_$BatchedDebugEventsSerializer":{"StructuredSerializer":["BatchedDebugEvents"],"Serializer":["BatchedDebugEvents"]},"_$DebugEvent":{"DebugEvent":[]},"_$BatchedDebugEvents":{"BatchedDebugEvents":[]},"_$DebugInfoSerializer":{"StructuredSerializer":["DebugInfo"],"Serializer":["DebugInfo"]},"_$DebugInfo":{"DebugInfo":[]},"_$DevToolsRequestSerializer":{"StructuredSerializer":["DevToolsRequest"],"Serializer":["DevToolsRequest"]},"_$DevToolsResponseSerializer":{"StructuredSerializer":["DevToolsResponse"],"Serializer":["DevToolsResponse"]},"_$DevToolsRequest":{"DevToolsRequest":[]},"_$DevToolsResponse":{"DevToolsResponse":[]},"_$ErrorResponseSerializer":{"StructuredSerializer":["ErrorResponse"],"Serializer":["ErrorResponse"]},"_$ErrorResponse":{"ErrorResponse":[]},"_$ExtensionRequestSerializer":{"StructuredSerializer":["ExtensionRequest"],"Serializer":["ExtensionRequest"]},"_$ExtensionResponseSerializer":{"StructuredSerializer":["ExtensionResponse"],"Serializer":["ExtensionResponse"]},"_$ExtensionEventSerializer":{"StructuredSerializer":["ExtensionEvent"],"Serializer":["ExtensionEvent"]},"_$BatchedEventsSerializer":{"StructuredSerializer":["BatchedEvents"],"Serializer":["BatchedEvents"]},"_$ExtensionRequest":{"ExtensionRequest":[]},"_$ExtensionResponse":{"ExtensionResponse":[]},"_$ExtensionEvent":{"ExtensionEvent":[]},"_$BatchedEvents":{"BatchedEvents":[]},"_$HotReloadRequestSerializer":{"StructuredSerializer":["HotReloadRequest"],"Serializer":["HotReloadRequest"]},"_$HotReloadRequest":{"HotReloadRequest":[]},"_$HotReloadResponseSerializer":{"StructuredSerializer":["HotReloadResponse"],"Serializer":["HotReloadResponse"]},"_$HotReloadResponse":{"HotReloadResponse":[]},"_$IsolateExitSerializer":{"StructuredSerializer":["IsolateExit"],"Serializer":["IsolateExit"]},"_$IsolateStartSerializer":{"StructuredSerializer":["IsolateStart"],"Serializer":["IsolateStart"]},"_$IsolateExit":{"IsolateExit":[]},"_$IsolateStart":{"IsolateStart":[]},"_$RegisterEventSerializer":{"StructuredSerializer":["RegisterEvent"],"Serializer":["RegisterEvent"]},"_$RegisterEvent":{"RegisterEvent":[]},"_$RunRequestSerializer":{"StructuredSerializer":["RunRequest"],"Serializer":["RunRequest"]},"_$RunRequest":{"RunRequest":[]},"SseSocketClient":{"SocketClient":[]},"WebSocketClient":{"SocketClient":[]},"Int32":{"Comparable":["Object"]},"Int64":{"Comparable":["Object"]},"ByteStream":{"StreamView":["List"],"Stream":["List"],"Stream.T":"List","StreamView.T":"List"},"ClientException":{"Exception":[]},"Request":{"BaseRequest":[]},"StreamedResponseV2":{"StreamedResponse":[]},"CaseInsensitiveMap":{"CanonicalizedMap":["String","String","1"],"Map":["String","1"],"CanonicalizedMap.K":"String","CanonicalizedMap.V":"1","CanonicalizedMap.C":"String"},"Level":{"Comparable":["Level"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"FileLocation":{"SourceLocation":[],"Comparable":["SourceLocation"]},"_FileSpan":{"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceLocation":{"Comparable":["SourceLocation"]},"SourceLocationMixin":{"SourceLocation":[],"Comparable":["SourceLocation"]},"SourceSpan":{"Comparable":["SourceSpan"]},"SourceSpanBase":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanException":{"Exception":[]},"SourceSpanFormatException":{"FormatException":[],"Exception":[]},"SourceSpanMixin":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanWithContext":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SseClient":{"StreamChannel":["String?"]},"GuaranteeChannel":{"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"StringScannerException":{"FormatException":[],"Exception":[]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"BrowserWebSocket":{"WebSocket":[]},"TextDataReceived":{"WebSocketEvent":[]},"BinaryDataReceived":{"WebSocketEvent":[]},"CloseReceived":{"WebSocketEvent":[]},"WebSocketException":{"Exception":[]},"WebSocketConnectionClosed":{"Exception":[]},"AdapterWebSocketChannel":{"WebSocketChannel":[],"StreamChannel":["@"]},"_WebSocketSink":{"WebSocketSink":[],"DelegatingStreamSink":["@"],"StreamSink":["@"],"DelegatingStreamSink.T":"@"},"WebSocketChannelException":{"Exception":[]},"DdcLibraryBundleRestarter":{"Restarter":[]},"DdcRestarter":{"Restarter":[]},"RequireRestarter":{"Restarter":[]},"HotReloadFailedException":{"Exception":[]},"Int8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]}}')); + A._Universe_addRules(init.typeUniverse, JSON.parse('{"JavaScriptFunction":"LegacyJavaScriptObject","PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptObject":{"JSObject":[]},"JSArray":{"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[]},"JSArraySafeToStringHook":{"SafeToStringHook":[]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"JavaScriptObject":[],"EfficientLengthIterable":["1"],"JSObject":[],"Iterable":["1"],"JSIndexable":["1"],"Iterable.E":"1"},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"Pattern":[],"JSIndexable":["@"],"TrustedGetRuntimeType":[]},"_CastIterableBase":{"Iterable":["2"]},"CastIterator":{"Iterator":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","Iterable.E":"2"},"CastMap":{"MapBase":["3","4"],"Map":["3","4"],"MapBase.K":"3","MapBase.V":"4"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int","Iterable.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"ListIterator":{"Iterator":["1"]},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedIterator":{"Iterator":["2"]},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"ExpandIterator":{"Iterator":["2"]},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"TakeIterator":{"Iterator":["1"]},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterator":{"Iterator":["1"]},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"EmptyIterator":{"Iterator":["1"]},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_Record_2_libraries_sources":{"_Record2":[],"_Record":[]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"_KeysOrValuesOrElementsIterator":{"Iterator":["1"]},"Instantiation":{"Closure":[],"Function":[]},"Instantiation1":{"Closure":[],"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Closure":[],"Function":[]},"Closure2Args":{"Closure":[],"Function":[]},"TearOffClosure":{"Closure":[],"Function":[]},"StaticClosure":{"Closure":[],"Function":[]},"BoundClosure":{"Closure":[],"Function":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"LinkedHashMapKeysIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"LinkedHashMapValuesIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapValueIterator":{"Iterator":["1"]},"LinkedHashMapEntriesIterable":{"EfficientLengthIterable":["MapEntry<1,2>"],"Iterable":["MapEntry<1,2>"],"Iterable.E":"MapEntry<1,2>"},"LinkedHashMapEntryIterator":{"Iterator":["MapEntry<1,2>"]},"JsIdentityLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_Record2":{"_Record":[]},"JSSyntaxRegExp":{"RegExp":[],"Pattern":[]},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"_AllMatchesIterator":{"Iterator":["RegExpMatch"]},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"_StringAllMatchesIterator":{"Iterator":["Match"]},"NativeByteBuffer":{"JavaScriptObject":[],"JSObject":[],"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeTypedData":{"JavaScriptObject":[],"JSObject":[]},"NativeByteData":{"JavaScriptObject":[],"ByteData":[],"JSObject":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"JavaScriptObject":[],"JSObject":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeFloat32List":{"Float32List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeFloat64List":{"Float64List":[],"ListBase":["double"],"NativeTypedArray":["double"],"List":["double"],"JavaScriptIndexingBehavior":["double"],"JavaScriptObject":[],"EfficientLengthIterable":["double"],"JSObject":[],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double","Iterable.E":"double","FixedLengthListMixin.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"Int16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"Int32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"Int8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"Uint16List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"Uint32List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"Uint8ClampedList":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"Uint8List":[],"ListBase":["int"],"NativeTypedArray":["int"],"List":["int"],"JavaScriptIndexingBehavior":["int"],"JavaScriptObject":[],"EfficientLengthIterable":["int"],"JSObject":[],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int","Iterable.E":"int","FixedLengthListMixin.E":"int"},"_Type":{"Type":[]},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_TimerImpl":{"Timer":[]},"_AsyncAwaitCompleter":{"Completer":["1"]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_SyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Future":{"Future":["1"]},"StreamView":{"Stream":["1"]},"_StreamController":{"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_AsyncStreamController":{"_AsyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_SyncStreamController":{"_SyncStreamControllerDispatch":["1"],"_StreamController":["1"],"StreamController":["1"],"StreamSink":["1"],"_StreamControllerLifecycle":["1"],"_EventSink":["1"],"_EventDispatch":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamSinkWrapper":{"StreamSink":["1"]},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_EventSink":["1"],"_EventDispatch":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_DelayedData":{"_DelayedEvent":["1"]},"_DelayedError":{"_DelayedEvent":["@"]},"_DelayedDone":{"_DelayedEvent":["@"]},"_DoneStreamSubscription":{"StreamSubscription":["1"]},"_EmptyStream":{"Stream":["1"],"Stream.T":"1"},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_EventSink":["2"],"_EventDispatch":["2"],"_BufferingStreamSubscription.T":"2"},"_MapStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"_Zone":[],"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_SplayTreeSetNode":{"_SplayTreeNode":["1","_SplayTreeSetNode<1>"],"_SplayTreeNode.K":"1","_SplayTreeNode.1":"_SplayTreeSetNode<1>"},"_HashMap":{"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_CustomHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"HashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"_LinkedCustomHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapBase.K":"1","MapBase.V":"2"},"_HashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashSetIterator":{"Iterator":["1"]},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_LinkedHashSetIterator":{"Iterator":["1"]},"UnmodifiableListView":{"ListBase":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","Iterable.E":"1","UnmodifiableListMixin.E":"1"},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ListQueue":{"Queue":["1"],"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_ListQueueIterator":{"Iterator":["1"]},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SplayTreeIterator":{"Iterator":["3"]},"_SplayTreeKeyIterator":{"_SplayTreeIterator":["1","2","1"],"Iterator":["1"],"_SplayTreeIterator.K":"1","_SplayTreeIterator.T":"1","_SplayTreeIterator.1":"2"},"SplayTreeSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"_SplayTree":["1","_SplayTreeSetNode<1>"],"Iterable":["1"],"Iterable.E":"1","_SplayTree.1":"_SplayTreeSetNode<1>","_SplayTree.K":"1"},"Encoding":{"Codec":["String","List"]},"_JsonMap":{"MapBase":["String","@"],"Map":["String","@"],"MapBase.K":"String","MapBase.V":"@"},"_JsonMapKeyIterable":{"ListIterable":["String"],"EfficientLengthIterable":["String"],"Iterable":["String"],"ListIterable.E":"String","Iterable.E":"String"},"AsciiCodec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"_UnicodeSubsetEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"AsciiEncoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"_UnicodeSubsetDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"AsciiDecoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"Base64Encoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Base64Decoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Converter":{"StreamTransformer":["1","2"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"],"Codec.S":"Object?"},"JsonEncoder":{"Converter":["Object?","String"],"StreamTransformer":["Object?","String"]},"JsonDecoder":{"Converter":["String","Object?"],"StreamTransformer":["String","Object?"]},"Latin1Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Latin1Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Latin1Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"Utf8Codec":{"Encoding":[],"Codec":["String","List"],"Codec.S":"String"},"Utf8Encoder":{"Converter":["String","List"],"StreamTransformer":["String","List"]},"Utf8Decoder":{"Converter":["List","String"],"StreamTransformer":["List","String"]},"BigInt":{"Comparable":["BigInt"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExp":{"Pattern":[]},"RegExpMatch":{"Match":[]},"Set":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Comparable":["String"],"Pattern":[]},"_BigIntImpl":{"BigInt":[],"Comparable":["BigInt"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"IntegerDivisionByZeroException":{"Exception":[],"Error":[]},"_StringStackTrace":{"StackTrace":[]},"StringBuffer":{"StringSink":[]},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"NullRejectionException":{"Exception":[]},"_JSRandom":{"Random":[]},"DelegatingStreamSink":{"StreamSink":["1"]},"ErrorResult":{"Result":["0&"]},"ValueResult":{"Result":["1"]},"_NextRequest":{"_EventRequest":["1"]},"_HasNextRequest":{"_EventRequest":["1"]},"BuiltList":{"Iterable":["1"]},"_BuiltList":{"BuiltList":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltListMultimap":{"BuiltListMultimap":["1","2"]},"_BuiltMap":{"BuiltMap":["1","2"]},"BuiltSet":{"Iterable":["1"]},"_BuiltSet":{"BuiltSet":["1"],"Iterable":["1"],"Iterable.E":"1"},"_BuiltSetMultimap":{"BuiltSetMultimap":["1","2"]},"BuiltValueNullFieldError":{"Error":[]},"BuiltValueNestedFieldError":{"Error":[]},"BoolJsonObject":{"JsonObject":[]},"ListJsonObject":{"JsonObject":[]},"MapJsonObject":{"JsonObject":[]},"NumJsonObject":{"JsonObject":[]},"StringJsonObject":{"JsonObject":[]},"DeserializationError":{"Error":[]},"BigIntSerializer":{"PrimitiveSerializer":["BigInt"],"Serializer":["BigInt"]},"BoolSerializer":{"PrimitiveSerializer":["bool"],"Serializer":["bool"]},"BuiltJsonSerializers":{"Serializers":[]},"BuiltListMultimapSerializer":{"StructuredSerializer":["BuiltListMultimap<@,@>"],"Serializer":["BuiltListMultimap<@,@>"]},"BuiltListSerializer":{"StructuredSerializer":["BuiltList<@>"],"Serializer":["BuiltList<@>"]},"BuiltMapSerializer":{"StructuredSerializer":["BuiltMap<@,@>"],"Serializer":["BuiltMap<@,@>"]},"BuiltSetMultimapSerializer":{"StructuredSerializer":["BuiltSetMultimap<@,@>"],"Serializer":["BuiltSetMultimap<@,@>"]},"BuiltSetSerializer":{"StructuredSerializer":["BuiltSet<@>"],"Serializer":["BuiltSet<@>"]},"DateTimeSerializer":{"PrimitiveSerializer":["DateTime"],"Serializer":["DateTime"]},"DoubleSerializer":{"PrimitiveSerializer":["double"],"Serializer":["double"]},"DurationSerializer":{"PrimitiveSerializer":["Duration"],"Serializer":["Duration"]},"Int32Serializer":{"PrimitiveSerializer":["Int32"],"Serializer":["Int32"]},"Int64Serializer":{"PrimitiveSerializer":["Int64"],"Serializer":["Int64"]},"IntSerializer":{"PrimitiveSerializer":["int"],"Serializer":["int"]},"JsonObjectSerializer":{"PrimitiveSerializer":["JsonObject"],"Serializer":["JsonObject"]},"NullSerializer":{"PrimitiveSerializer":["Null"],"Serializer":["Null"]},"NumSerializer":{"PrimitiveSerializer":["num"],"Serializer":["num"]},"RegExpSerializer":{"PrimitiveSerializer":["RegExp"],"Serializer":["RegExp"]},"StringSerializer":{"PrimitiveSerializer":["String"],"Serializer":["String"]},"Uint8ListSerializer":{"PrimitiveSerializer":["Uint8List"],"Serializer":["Uint8List"]},"UriSerializer":{"PrimitiveSerializer":["Uri"],"Serializer":["Uri"]},"CanonicalizedMap":{"Map":["2","3"]},"DefaultEquality":{"Equality":["1"]},"IterableEquality":{"Equality":["Iterable<1>"]},"ListEquality":{"Equality":["List<1>"]},"_UnorderedEquality":{"Equality":["2"]},"SetEquality":{"_UnorderedEquality":["1","Set<1>"],"Equality":["Set<1>"],"_UnorderedEquality.E":"1","_UnorderedEquality.T":"Set<1>"},"MapEquality":{"Equality":["Map<1,2>"]},"DeepCollectionEquality":{"Equality":["@"]},"QueueList":{"ListBase":["1"],"List":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","QueueList.E":"1","Iterable.E":"1"},"_CastQueueList":{"QueueList":["2"],"ListBase":["2"],"List":["2"],"Queue":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","QueueList.E":"2","Iterable.E":"2"},"_$BuildStatusSerializer":{"PrimitiveSerializer":["BuildStatus"],"Serializer":["BuildStatus"]},"_$BuildResultSerializer":{"StructuredSerializer":["BuildResult"],"Serializer":["BuildResult"]},"_$BuildResult":{"BuildResult":[]},"_$ConnectRequestSerializer":{"StructuredSerializer":["ConnectRequest"],"Serializer":["ConnectRequest"]},"_$ConnectRequest":{"ConnectRequest":[]},"_$DebugEventSerializer":{"StructuredSerializer":["DebugEvent"],"Serializer":["DebugEvent"]},"_$BatchedDebugEventsSerializer":{"StructuredSerializer":["BatchedDebugEvents"],"Serializer":["BatchedDebugEvents"]},"_$DebugEvent":{"DebugEvent":[]},"_$BatchedDebugEvents":{"BatchedDebugEvents":[]},"_$DebugInfoSerializer":{"StructuredSerializer":["DebugInfo"],"Serializer":["DebugInfo"]},"_$DebugInfo":{"DebugInfo":[]},"_$DevToolsRequestSerializer":{"StructuredSerializer":["DevToolsRequest"],"Serializer":["DevToolsRequest"]},"_$DevToolsResponseSerializer":{"StructuredSerializer":["DevToolsResponse"],"Serializer":["DevToolsResponse"]},"_$DevToolsRequest":{"DevToolsRequest":[]},"_$DevToolsResponse":{"DevToolsResponse":[]},"_$ErrorResponseSerializer":{"StructuredSerializer":["ErrorResponse"],"Serializer":["ErrorResponse"]},"_$ErrorResponse":{"ErrorResponse":[]},"_$ExtensionRequestSerializer":{"StructuredSerializer":["ExtensionRequest"],"Serializer":["ExtensionRequest"]},"_$ExtensionResponseSerializer":{"StructuredSerializer":["ExtensionResponse"],"Serializer":["ExtensionResponse"]},"_$ExtensionEventSerializer":{"StructuredSerializer":["ExtensionEvent"],"Serializer":["ExtensionEvent"]},"_$BatchedEventsSerializer":{"StructuredSerializer":["BatchedEvents"],"Serializer":["BatchedEvents"]},"_$ExtensionRequest":{"ExtensionRequest":[]},"_$ExtensionResponse":{"ExtensionResponse":[]},"_$ExtensionEvent":{"ExtensionEvent":[]},"_$BatchedEvents":{"BatchedEvents":[]},"_$HotReloadRequestSerializer":{"StructuredSerializer":["HotReloadRequest"],"Serializer":["HotReloadRequest"]},"_$HotReloadRequest":{"HotReloadRequest":[]},"_$HotReloadResponseSerializer":{"StructuredSerializer":["HotReloadResponse"],"Serializer":["HotReloadResponse"]},"_$HotReloadResponse":{"HotReloadResponse":[]},"_$IsolateExitSerializer":{"StructuredSerializer":["IsolateExit"],"Serializer":["IsolateExit"]},"_$IsolateStartSerializer":{"StructuredSerializer":["IsolateStart"],"Serializer":["IsolateStart"]},"_$IsolateExit":{"IsolateExit":[]},"_$IsolateStart":{"IsolateStart":[]},"_$RegisterEventSerializer":{"StructuredSerializer":["RegisterEvent"],"Serializer":["RegisterEvent"]},"_$RegisterEvent":{"RegisterEvent":[]},"_$RunRequestSerializer":{"StructuredSerializer":["RunRequest"],"Serializer":["RunRequest"]},"_$RunRequest":{"RunRequest":[]},"SseSocketClient":{"SocketClient":[]},"WebSocketClient":{"SocketClient":[]},"Int32":{"Comparable":["Object"]},"Int64":{"Comparable":["Object"]},"ByteStream":{"StreamView":["List"],"Stream":["List"],"Stream.T":"List","StreamView.T":"List"},"ClientException":{"Exception":[]},"Request":{"BaseRequest":[]},"StreamedResponseV2":{"StreamedResponse":[]},"CaseInsensitiveMap":{"CanonicalizedMap":["String","String","1"],"Map":["String","1"],"CanonicalizedMap.K":"String","CanonicalizedMap.V":"1","CanonicalizedMap.C":"String"},"Level":{"Comparable":["Level"]},"PathException":{"Exception":[]},"PosixStyle":{"InternalStyle":[]},"UrlStyle":{"InternalStyle":[]},"WindowsStyle":{"InternalStyle":[]},"FileLocation":{"SourceLocation":[],"Comparable":["SourceLocation"]},"_FileSpan":{"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceLocation":{"Comparable":["SourceLocation"]},"SourceLocationMixin":{"SourceLocation":[],"Comparable":["SourceLocation"]},"SourceSpan":{"Comparable":["SourceSpan"]},"SourceSpanBase":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanException":{"Exception":[]},"SourceSpanFormatException":{"FormatException":[],"Exception":[]},"SourceSpanMixin":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanWithContext":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SseClient":{"StreamChannel":["String?"]},"GuaranteeChannel":{"StreamChannel":["1"]},"_GuaranteeSink":{"StreamSink":["1"]},"StreamChannelMixin":{"StreamChannel":["1"]},"StringScannerException":{"FormatException":[],"Exception":[]},"_EventStream":{"Stream":["1"],"Stream.T":"1"},"_EventStreamSubscription":{"StreamSubscription":["1"]},"BrowserWebSocket":{"WebSocket":[]},"TextDataReceived":{"WebSocketEvent":[]},"BinaryDataReceived":{"WebSocketEvent":[]},"CloseReceived":{"WebSocketEvent":[]},"WebSocketException":{"Exception":[]},"WebSocketConnectionClosed":{"Exception":[]},"AdapterWebSocketChannel":{"WebSocketChannel":[],"StreamChannel":["@"]},"_WebSocketSink":{"WebSocketSink":[],"DelegatingStreamSink":["@"],"StreamSink":["@"],"DelegatingStreamSink.T":"@"},"WebSocketChannelException":{"Exception":[]},"DdcLibraryBundleRestarter":{"Restarter":[]},"DdcRestarter":{"Restarter":[]},"RequireRestarter":{"Restarter":[]},"HotReloadFailedException":{"Exception":[]},"Int8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]}}')); A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"UnmodifiableListBase":1,"__CastListBase__CastIterableBase_ListMixin":2,"NativeTypedArray":1,"_DelayedEvent":1,"_SplayTreeSet__SplayTree_Iterable":1,"_SplayTreeSet__SplayTree_Iterable_SetMixin":1,"_QueueList_Object_ListMixin":1,"StreamChannelMixin":1}')); var string$ = { x00_____: "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00", @@ -28140,7 +28074,6 @@ Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type", Hot_reA: "Hot reload is not supported for the AMD module format.", Hot_reD: "Hot reload is not supported for the DDC module format.", - max_mu: "max must be in range 0 < max \u2264 2^32, was ", serial: "serializer must be StructuredSerializer or PrimitiveSerializer" }; var type$ = (function rtii() { @@ -28384,7 +28317,6 @@ B.JSString_methods = J.JSString.prototype; B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype; B.JavaScriptObject_methods = J.JavaScriptObject.prototype; - B.NativeByteData_methods = A.NativeByteData.prototype; B.NativeUint32List_methods = A.NativeUint32List.prototype; B.NativeUint8List_methods = A.NativeUint8List.prototype; B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype; @@ -28543,9 +28475,9 @@ B.Duration_5000000 = new A.Duration(5000000); B.Type_BuiltList_fj6 = A.typeLiteral("BuiltList<@>"); B.Type_DebugEvent_gLJ = A.typeLiteral("DebugEvent"); - B.List_empty1 = A._setArrayType(makeConstList([]), type$.JSArray_FullType); + B.List_empty1 = makeConstList([], type$.JSArray_FullType); B.FullType_np4 = new A.FullType(B.Type_DebugEvent_gLJ, B.List_empty1, false); - B.List_njn = A._setArrayType(makeConstList([B.FullType_np4]), type$.JSArray_FullType); + B.List_njn = makeConstList([B.FullType_np4], type$.JSArray_FullType); B.FullType_3Xm = new A.FullType(B.Type_BuiltList_fj6, B.List_njn, false); B.Type_String_AXU = A.typeLiteral("String"); B.FullType_PT1 = new A.FullType(B.Type_String_AXU, B.List_empty1, false); @@ -28554,15 +28486,15 @@ B.Type_BuiltSetMultimap_yT7 = A.typeLiteral("BuiltSetMultimap<@,@>"); B.Type_Object_A4p = A.typeLiteral("Object"); B.FullType_kV7 = new A.FullType(B.Type_Object_A4p, B.List_empty1, false); - B.List_03P = A._setArrayType(makeConstList([B.FullType_kV7, B.FullType_kV7]), type$.JSArray_FullType); + B.List_03P = makeConstList([B.FullType_kV7, B.FullType_kV7], type$.JSArray_FullType); B.FullType_SWR = new A.FullType(B.Type_BuiltSetMultimap_yT7, B.List_03P, false); B.Type_BuiltListMultimap_HQW = A.typeLiteral("BuiltListMultimap<@,@>"); B.FullType_WP0 = new A.FullType(B.Type_BuiltListMultimap_HQW, B.List_03P, false); B.Type_ExtensionEvent_T8C = A.typeLiteral("ExtensionEvent"); B.FullType_I4i = new A.FullType(B.Type_ExtensionEvent_T8C, B.List_empty1, false); - B.List_O9J = A._setArrayType(makeConstList([B.FullType_I4i]), type$.JSArray_FullType); + B.List_O9J = makeConstList([B.FullType_I4i], type$.JSArray_FullType); B.FullType_ahP = new A.FullType(B.Type_BuiltList_fj6, B.List_O9J, false); - B.List_LtY = A._setArrayType(makeConstList([B.FullType_kV7]), type$.JSArray_FullType); + B.List_LtY = makeConstList([B.FullType_kV7], type$.JSArray_FullType); B.FullType_hm4 = new A.FullType(B.Type_BuiltList_fj6, B.List_LtY, false); B.Type_BuildStatus_8KJ = A.typeLiteral("BuildStatus"); B.FullType_k5M = new A.FullType(B.Type_BuildStatus_8KJ, B.List_empty1, false); @@ -28582,61 +28514,61 @@ B.Level_WARNING_900 = new A.Level("WARNING", 900); B.Type_ExtensionRequest_9GR = A.typeLiteral("ExtensionRequest"); B.Type__$ExtensionRequest_o1C = A.typeLiteral("_$ExtensionRequest"); - B.List_2dD = A._setArrayType(makeConstList([B.Type_ExtensionRequest_9GR, B.Type__$ExtensionRequest_o1C]), type$.JSArray_Type); + B.List_2dD = makeConstList([B.Type_ExtensionRequest_9GR, B.Type__$ExtensionRequest_o1C], type$.JSArray_Type); B.Type_DebugInfo_ua9 = A.typeLiteral("DebugInfo"); B.Type__$DebugInfo_ywz = A.typeLiteral("_$DebugInfo"); - B.List_55I = A._setArrayType(makeConstList([B.Type_DebugInfo_ua9, B.Type__$DebugInfo_ywz]), type$.JSArray_Type); + B.List_55I = makeConstList([B.Type_DebugInfo_ua9, B.Type__$DebugInfo_ywz], type$.JSArray_Type); B.Type_ErrorResponse_WMn = A.typeLiteral("ErrorResponse"); B.Type__$ErrorResponse_9Ps = A.typeLiteral("_$ErrorResponse"); - B.List_5LV = A._setArrayType(makeConstList([B.Type_ErrorResponse_WMn, B.Type__$ErrorResponse_9Ps]), type$.JSArray_Type); + B.List_5LV = makeConstList([B.Type_ErrorResponse_WMn, B.Type__$ErrorResponse_9Ps], type$.JSArray_Type); B.Type_HotReloadResponse_Gqc = A.typeLiteral("HotReloadResponse"); B.Type__$HotReloadResponse_56g = A.typeLiteral("_$HotReloadResponse"); - B.List_DqJ = A._setArrayType(makeConstList([B.Type_HotReloadResponse_Gqc, B.Type__$HotReloadResponse_56g]), type$.JSArray_Type); + B.List_DqJ = makeConstList([B.Type_HotReloadResponse_Gqc, B.Type__$HotReloadResponse_56g], type$.JSArray_Type); B.Type_RegisterEvent_0Yw = A.typeLiteral("RegisterEvent"); B.Type__$RegisterEvent_Ks1 = A.typeLiteral("_$RegisterEvent"); - B.List_EMv = A._setArrayType(makeConstList([B.Type_RegisterEvent_0Yw, B.Type__$RegisterEvent_Ks1]), type$.JSArray_Type); + B.List_EMv = makeConstList([B.Type_RegisterEvent_0Yw, B.Type__$RegisterEvent_Ks1], type$.JSArray_Type); B.Type_DevToolsRequest_DxE = A.typeLiteral("DevToolsRequest"); B.Type__$DevToolsRequest_Rak = A.typeLiteral("_$DevToolsRequest"); - B.List_G46 = A._setArrayType(makeConstList([B.Type_DevToolsRequest_DxE, B.Type__$DevToolsRequest_Rak]), type$.JSArray_Type); + B.List_G46 = makeConstList([B.Type_DevToolsRequest_DxE, B.Type__$DevToolsRequest_Rak], type$.JSArray_Type); B.Type_IsolateStart_nRT = A.typeLiteral("IsolateStart"); B.Type__$IsolateStart_Pnq = A.typeLiteral("_$IsolateStart"); - B.List_KpG = A._setArrayType(makeConstList([B.Type_IsolateStart_nRT, B.Type__$IsolateStart_Pnq]), type$.JSArray_Type); + B.List_KpG = makeConstList([B.Type_IsolateStart_nRT, B.Type__$IsolateStart_Pnq], type$.JSArray_Type); B.Type_IsolateExit_QVA = A.typeLiteral("IsolateExit"); B.Type__$IsolateExit_4XE = A.typeLiteral("_$IsolateExit"); - B.List_MJN = A._setArrayType(makeConstList([B.Type_IsolateExit_QVA, B.Type__$IsolateExit_4XE]), type$.JSArray_Type); + B.List_MJN = makeConstList([B.Type_IsolateExit_QVA, B.Type__$IsolateExit_4XE], type$.JSArray_Type); B.Type_ExtensionResponse_0Oi = A.typeLiteral("ExtensionResponse"); B.Type__$ExtensionResponse_46G = A.typeLiteral("_$ExtensionResponse"); - B.List_RWp = A._setArrayType(makeConstList([B.Type_ExtensionResponse_0Oi, B.Type__$ExtensionResponse_46G]), type$.JSArray_Type); + B.List_RWp = makeConstList([B.Type_ExtensionResponse_0Oi, B.Type__$ExtensionResponse_46G], type$.JSArray_Type); B.Type_RunRequest_Hfm = A.typeLiteral("RunRequest"); B.Type__$RunRequest_3ad = A.typeLiteral("_$RunRequest"); - B.List_RlA = A._setArrayType(makeConstList([B.Type_RunRequest_Hfm, B.Type__$RunRequest_3ad]), type$.JSArray_Type); + B.List_RlA = makeConstList([B.Type_RunRequest_Hfm, B.Type__$RunRequest_3ad], type$.JSArray_Type); B.Type_DevToolsResponse_gVs = A.typeLiteral("DevToolsResponse"); B.Type__$DevToolsResponse_dcs = A.typeLiteral("_$DevToolsResponse"); - B.List_TEH = A._setArrayType(makeConstList([B.Type_DevToolsResponse_gVs, B.Type__$DevToolsResponse_dcs]), type$.JSArray_Type); - B.List_Type_BuildStatus_8KJ = A._setArrayType(makeConstList([B.Type_BuildStatus_8KJ]), type$.JSArray_Type); + B.List_TEH = makeConstList([B.Type_DevToolsResponse_gVs, B.Type__$DevToolsResponse_dcs], type$.JSArray_Type); + B.List_Type_BuildStatus_8KJ = makeConstList([B.Type_BuildStatus_8KJ], type$.JSArray_Type); B.Type_BatchedDebugEvents_v7B = A.typeLiteral("BatchedDebugEvents"); B.Type__$BatchedDebugEvents_LFV = A.typeLiteral("_$BatchedDebugEvents"); - B.List_WAE = A._setArrayType(makeConstList([B.Type_BatchedDebugEvents_v7B, B.Type__$BatchedDebugEvents_LFV]), type$.JSArray_Type); - B.List_ZNA = A._setArrayType(makeConstList([0, 0, 1048576, 531441, 1048576, 390625, 279936, 823543, 262144, 531441, 1000000, 161051, 248832, 371293, 537824, 759375, 1048576, 83521, 104976, 130321, 160000, 194481, 234256, 279841, 331776, 390625, 456976, 531441, 614656, 707281, 810000, 923521, 1048576, 35937, 39304, 42875, 46656]), type$.JSArray_int); + B.List_WAE = makeConstList([B.Type_BatchedDebugEvents_v7B, B.Type__$BatchedDebugEvents_LFV], type$.JSArray_Type); + B.List_ZNA = makeConstList([0, 0, 1048576, 531441, 1048576, 390625, 279936, 823543, 262144, 531441, 1000000, 161051, 248832, 371293, 537824, 759375, 1048576, 83521, 104976, 130321, 160000, 194481, 234256, 279841, 331776, 390625, 456976, 531441, 614656, 707281, 810000, 923521, 1048576, 35937, 39304, 42875, 46656], type$.JSArray_int); B.Type_HotReloadRequest_EsW = A.typeLiteral("HotReloadRequest"); B.Type__$HotReloadRequest_ynq = A.typeLiteral("_$HotReloadRequest"); - B.List_dz9 = A._setArrayType(makeConstList([B.Type_HotReloadRequest_EsW, B.Type__$HotReloadRequest_ynq]), type$.JSArray_Type); - B.List_empty = A._setArrayType(makeConstList([]), type$.JSArray_String); - B.List_empty0 = A._setArrayType(makeConstList([]), type$.JSArray_dynamic); - B.List_fAJ = A._setArrayType(makeConstList(["d", "D", "\u2202", "\xce"]), type$.JSArray_String); + B.List_dz9 = makeConstList([B.Type_HotReloadRequest_EsW, B.Type__$HotReloadRequest_ynq], type$.JSArray_Type); + B.List_empty = makeConstList([], type$.JSArray_String); + B.List_empty0 = makeConstList([], type$.JSArray_dynamic); + B.List_fAJ = makeConstList(["d", "D", "\u2202", "\xce"], type$.JSArray_String); B.Type__$DebugEvent_YX4 = A.typeLiteral("_$DebugEvent"); - B.List_fK8 = A._setArrayType(makeConstList([B.Type_DebugEvent_gLJ, B.Type__$DebugEvent_YX4]), type$.JSArray_Type); + B.List_fK8 = makeConstList([B.Type_DebugEvent_gLJ, B.Type__$DebugEvent_YX4], type$.JSArray_Type); B.Type_BatchedEvents_ABc = A.typeLiteral("BatchedEvents"); B.Type__$BatchedEvents_jAA = A.typeLiteral("_$BatchedEvents"); - B.List_oDF = A._setArrayType(makeConstList([B.Type_BatchedEvents_ABc, B.Type__$BatchedEvents_jAA]), type$.JSArray_Type); + B.List_oDF = makeConstList([B.Type_BatchedEvents_ABc, B.Type__$BatchedEvents_jAA], type$.JSArray_Type); B.Type_BuildResult_SAR = A.typeLiteral("BuildResult"); B.Type__$BuildResult_Iwz = A.typeLiteral("_$BuildResult"); - B.List_pLn = A._setArrayType(makeConstList([B.Type_BuildResult_SAR, B.Type__$BuildResult_Iwz]), type$.JSArray_Type); + B.List_pLn = makeConstList([B.Type_BuildResult_SAR, B.Type__$BuildResult_Iwz], type$.JSArray_Type); B.Type_ConnectRequest_8Nv = A.typeLiteral("ConnectRequest"); B.Type__$ConnectRequest_3Qd = A.typeLiteral("_$ConnectRequest"); - B.List_xmd = A._setArrayType(makeConstList([B.Type_ConnectRequest_8Nv, B.Type__$ConnectRequest_3Qd]), type$.JSArray_Type); + B.List_xmd = makeConstList([B.Type_ConnectRequest_8Nv, B.Type__$ConnectRequest_3Qd], type$.JSArray_Type); B.Type__$ExtensionEvent_WzR = A.typeLiteral("_$ExtensionEvent"); - B.List_yvR = A._setArrayType(makeConstList([B.Type_ExtensionEvent_T8C, B.Type__$ExtensionEvent_WzR]), type$.JSArray_Type); + B.List_yvR = makeConstList([B.Type_ExtensionEvent_T8C, B.Type__$ExtensionEvent_WzR], type$.JSArray_Type); B.Object_empty = {}; B.Map_empty0 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap")); B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<@,@>")); @@ -28796,11 +28728,6 @@ _lazyFinal($, "_Uri__needsNoEncoding", "$get$_Uri__needsNoEncoding", () => A.RegExp_RegExp("^[\\-\\.0-9A-Z_a-z~]*$", true, false)); _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_A4p)); _lazyFinal($, "_jsBoxedDartObjectProperty", "$get$_jsBoxedDartObjectProperty", () => Symbol("jsBoxedDartObjectProperty")); - _lazyFinal($, "Random__secureRandom", "$get$Random__secureRandom", () => { - var t1 = new A._JSSecureRandom(new DataView(new ArrayBuffer(A._checkLength(8)))); - t1._JSSecureRandom$0(); - return t1; - }); _lazyFinal($, "isSoundMode", "$get$isSoundMode", () => !type$.List_int._is(A._setArrayType([], A.findType("JSArray")))); _lazy($, "newBuiltValueToStringHelper", "$get$newBuiltValueToStringHelper", () => new A.newBuiltValueToStringHelper_closure()); _lazyFinal($, "_runtimeType", "$get$_runtimeType", () => A.getRuntimeTypeOfDartObject(A.RegExp_RegExp("", true, false))); @@ -28856,7 +28783,7 @@ _lazyFinal($, "_escapedChar", "$get$_escapedChar", () => A.RegExp_RegExp('["\\x00-\\x1F\\x7F]', true, false)); _lazyFinal($, "token", "$get$token", () => A.RegExp_RegExp('[^()<>@,;:"\\\\/[\\]?={} \\t\\x00-\\x1F\\x7F]+', true, false)); _lazyFinal($, "_lws", "$get$_lws", () => A.RegExp_RegExp("(?:\\r\\n)?[ \\t]+", true, false)); - _lazyFinal($, "_quotedString", "$get$_quotedString", () => A.RegExp_RegExp('"(?:[^"\\x00-\\x1F\\x7F\\\\]|\\\\.)*"', true, false)); + _lazyFinal($, "_quotedString", "$get$_quotedString", () => A.RegExp_RegExp('"(?:[^"\\x00-\\x1F\\x7F]|\\\\.)*"', true, false)); _lazyFinal($, "_quotedPair", "$get$_quotedPair", () => A.RegExp_RegExp("\\\\(.)", true, false)); _lazyFinal($, "nonToken", "$get$nonToken", () => A.RegExp_RegExp('[()<>@,;:"\\\\/\\[\\]?={} \\t\\x00-\\x1F\\x7F]', true, false)); _lazyFinal($, "whitespace", "$get$whitespace", () => A.RegExp_RegExp("(?:" + $.$get$_lws().pattern + ")*", true, false)); @@ -28875,7 +28802,10 @@ t4 = A.Completer_Completer(type$.dynamic); return new A.Pool(t2, t3, t1, 1000, new A.AsyncMemoizer(t4, A.findType("AsyncMemoizer<@>"))); }); - _lazy($, "V1State_random", "$get$V1State_random", () => new A.CryptoRNG()); + _lazy($, "V1State_random", "$get$V1State_random", () => { + var t1 = A.Random_Random(null); + return new A.MathRNG(t1); + }); _lazyFinal($, "UuidParsing__byteToHex", "$get$UuidParsing__byteToHex", () => { var i, _list = J.JSArray_JSArray$allocateGrowable(256, type$.String); @@ -28883,7 +28813,6 @@ _list[i] = B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1(i, 16), 2, "0"); return _list; }); - _lazyFinal($, "CryptoRNG__secureRandom", "$get$CryptoRNG__secureRandom", () => $.$get$Random__secureRandom()); _lazyFinal($, "_noncePattern", "$get$_noncePattern", () => A.RegExp_RegExp("^[\\w+/_-]+[=]{0,2}$", true, false)); _lazyFinal($, "_createScript", "$get$_createScript", () => new A._createScript_closure().call$0()); })(); diff --git a/dwds/lib/src/services/chrome_proxy_service.dart b/dwds/lib/src/services/chrome_proxy_service.dart index 64f45070c..c8747b6d3 100644 --- a/dwds/lib/src/services/chrome_proxy_service.dart +++ b/dwds/lib/src/services/chrome_proxy_service.dart @@ -204,7 +204,7 @@ class ChromeProxyService implements VmServiceInterface { sendClientRequest, useWebSocket: useWebSocket, ); - safeUnawaited(service.createIsolate(appConnection)); + safeUnawaited(service.createIsolate(appConnection, newConnection: true)); return service; } @@ -300,7 +300,14 @@ class ChromeProxyService implements VmServiceInterface { /// Only one isolate at a time is supported, but they should be cleaned up /// with [destroyIsolate] and recreated with this method there is a hot /// restart or full page refresh. - Future createIsolate(AppConnection appConnection) async { + /// + /// If [newConnection] is true, does not recompute metadata information as + /// that is done only when we recreate the isolate the connection as source + /// data may have changed. + Future createIsolate( + AppConnection appConnection, { + bool newConnection = false, + }) async { // Inspector is null if the previous isolate is destroyed. if (_isIsolateRunning) { throw UnsupportedError( @@ -316,6 +323,9 @@ class ChromeProxyService implements VmServiceInterface { // Issue: https://github.com/dart-lang/webdev/issues/1282 final debugger = await debuggerFuture; final entrypoint = appConnection.request.entrypointPath; + if (!newConnection) { + await globalToolConfiguration.loadStrategy.trackEntrypoint(entrypoint); + } _initializeEntrypoint(entrypoint); debugger.notifyPausedAtStart(); diff --git a/dwds/test/common/hot_restart_common.dart b/dwds/test/common/hot_restart_common.dart index deeb791b8..4981b6c0d 100644 --- a/dwds/test/common/hot_restart_common.dart +++ b/dwds/test/common/hot_restart_common.dart @@ -378,43 +378,6 @@ void runTests({ expect(source.contains(newString), isTrue); }); - test('can hot restart while paused', () async { - final client = context.debugConnection.vmService; - var vm = await client.getVM(); - var isolateId = vm.isolates!.first.id!; - await client.streamListen('Debug'); - final stream = client.onEvent('Debug'); - final scriptList = await client.getScripts(isolateId); - final main = scriptList.scripts!.firstWhere( - (script) => script.uri!.contains('main.dart'), - ); - final bpLine = await context.findBreakpointLine( - 'printCount', - isolateId, - main, - ); - await client.addBreakpoint(isolateId, main.id!, bpLine); - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); - - await makeEditAndRecompile(); - final hotRestart = context.getRegisteredServiceExtension('hotRestart'); - await fakeClient.callServiceExtension(hotRestart!); - final source = await context.webDriver.pageSource; - - // Main is re-invoked which shouldn't clear the state. - expect(source.contains(originalString), isTrue); - expect(source.contains(newString), isTrue); - - vm = await client.getVM(); - isolateId = vm.isolates!.first.id!; - final isolate = await client.getIsolate(isolateId); - - // Previous breakpoint should be cleared. - expect(isolate.breakpoints!.isEmpty, isTrue); - }); - test('can evaluate expressions after hot restart', () async { final client = context.debugConnection.vmService; @@ -541,106 +504,99 @@ void runTests({ timeout: Timeout.factor(2), ); - group( - 'when isolates_paused_on_start is true', - () { - late VmService client; - late VmService fakeClient; - - setUp(() async { - setCurrentLogWriter(debug: debug); - await context.setUp( - testSettings: TestSettings( - enableExpressionEvaluation: true, - compilationMode: compilationMode, - moduleFormat: provider.ddcModuleFormat, - canaryFeatures: provider.canaryFeatures, - ), - ); - client = context.debugConnection.vmService; - fakeClient = await context.connectFakeClient(); - await client.setFlag('pause_isolates_on_start', 'true'); - await client.streamListen('Isolate'); - }); - - tearDown(() async { - await context.tearDown(); - undoEdit(); - }); - - test( - 'after hot-restart, does not run app until there is a resume event', - () async { - await makeEditAndRecompile(); + group('when isolates_paused_on_start is true', () { + late VmService client; + late VmService fakeClient; - final eventsDone = expectLater( - client.onIsolateEvent, - emitsThrough( - emitsInOrder([ - _hasKind(EventKind.kIsolateExit), - _hasKind(EventKind.kIsolateStart), - _hasKind(EventKind.kIsolateRunnable), - ]), - ), - ); + setUp(() async { + setCurrentLogWriter(debug: debug); + await context.setUp( + testSettings: TestSettings( + enableExpressionEvaluation: true, + compilationMode: compilationMode, + moduleFormat: provider.ddcModuleFormat, + canaryFeatures: provider.canaryFeatures, + ), + ); + client = context.debugConnection.vmService; + fakeClient = await context.connectFakeClient(); + await client.setFlag('pause_isolates_on_start', 'true'); + await client.streamListen('Isolate'); + }); - final hotRestart = context.getRegisteredServiceExtension( - 'hotRestart', - ); - expect( - await fakeClient.callServiceExtension(hotRestart!), - const TypeMatcher(), - ); + tearDown(() async { + await context.tearDown(); + undoEdit(); + }); - await eventsDone; + test( + 'after hot-restart, does not run app until there is a resume event', + () async { + await makeEditAndRecompile(); + + final eventsDone = expectLater( + client.onIsolateEvent, + emitsThrough( + emitsInOrder([ + _hasKind(EventKind.kIsolateExit), + _hasKind(EventKind.kIsolateStart), + _hasKind(EventKind.kIsolateRunnable), + ]), + ), + ); - final sourceBeforeResume = await context.webDriver.pageSource; - expect(sourceBeforeResume.contains(newString), isFalse); + final hotRestart = context.getRegisteredServiceExtension('hotRestart'); + expect( + await fakeClient.callServiceExtension(hotRestart!), + const TypeMatcher(), + ); - final vm = await client.getVM(); - final isolateId = vm.isolates!.first.id!; - await client.resume(isolateId); + await eventsDone; - final sourceAfterResume = await context.webDriver.pageSource; - expect(sourceAfterResume.contains(newString), isTrue); - }, - ); + final sourceBeforeResume = await context.webDriver.pageSource; + expect(sourceBeforeResume.contains(newString), isFalse); - test( - 'after page refresh, does not run app until there is a resume event', - () async { - await makeEditAndRecompile(); + final vm = await client.getVM(); + final isolateId = vm.isolates!.first.id!; + await client.resume(isolateId); - await context.webDriver.driver.refresh(); + final sourceAfterResume = await context.webDriver.pageSource; + expect(sourceAfterResume.contains(newString), isTrue); + }, + ); - final eventsDone = expectLater( - client.onIsolateEvent, - emitsThrough( - emitsInOrder([ - _hasKind(EventKind.kIsolateExit), - _hasKind(EventKind.kIsolateStart), - _hasKind(EventKind.kIsolateRunnable), - ]), - ), - ); + test( + 'after page refresh, does not run app until there is a resume event', + () async { + await makeEditAndRecompile(); + + await context.webDriver.driver.refresh(); + + final eventsDone = expectLater( + client.onIsolateEvent, + emitsThrough( + emitsInOrder([ + _hasKind(EventKind.kIsolateExit), + _hasKind(EventKind.kIsolateStart), + _hasKind(EventKind.kIsolateRunnable), + ]), + ), + ); - await eventsDone; + await eventsDone; - final sourceBeforeResume = await context.webDriver.pageSource; - expect(sourceBeforeResume.contains(newString), isFalse); + final sourceBeforeResume = await context.webDriver.pageSource; + expect(sourceBeforeResume.contains(newString), isFalse); - final vm = await client.getVM(); - final isolateId = vm.isolates!.first.id!; - await client.resume(isolateId); + final vm = await client.getVM(); + final isolateId = vm.isolates!.first.id!; + await client.resume(isolateId); - final sourceAfterResume = await context.webDriver.pageSource; - expect(sourceAfterResume.contains(newString), isTrue); - }, - ); - }, - // https://github.com/dart-lang/sdk/issues/60528 - skip: moduleFormat == ModuleFormat.ddc && canaryFeatures == true, - ); + final sourceAfterResume = await context.webDriver.pageSource; + expect(sourceAfterResume.contains(newString), isTrue); + }, + ); + }); } TypeMatcher _hasKind(String kind) => diff --git a/dwds/test/fixtures/context.dart b/dwds/test/fixtures/context.dart index abe8f8f1d..f14be2821 100644 --- a/dwds/test/fixtures/context.dart +++ b/dwds/test/fixtures/context.dart @@ -583,6 +583,16 @@ class TestContext { file.writeAsStringSync(fileContents.replaceAll(toReplace, replaceWith)); } + void addLibraryFile({required String libFileName, required String contents}) { + final file = File(project.dartLibFilePath(libFileName)); + file.writeAsStringSync(contents); + } + + void removeLibraryFile({required String libFileName}) { + final file = File(project.dartLibFilePath(libFileName)); + file.deleteSync(); + } + Future recompile({required bool fullRestart}) async { await webRunner.run( frontendServerFileSystem, diff --git a/dwds/test/fixtures/project.dart b/dwds/test/fixtures/project.dart index 25f58e017..8ce0d88e6 100644 --- a/dwds/test/fixtures/project.dart +++ b/dwds/test/fixtures/project.dart @@ -135,6 +135,14 @@ class TestProject { htmlEntryFileName: 'index.html', ); + static const testHotRestartBreakpoints = TestProject._( + packageName: '_test_hot_restart_breakpoints', + packageDirectory: '_testHotRestartBreakpoints', + webAssetsPath: 'web', + dartEntryFileName: 'main.dart', + htmlEntryFileName: 'index.html', + ); + static const testHotReload = TestProject._( packageName: '_test_hot_reload', packageDirectory: '_testHotReload', diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart new file mode 100644 index 000000000..0be4ac2ca --- /dev/null +++ b/dwds/test/hot_restart_breakpoints_test.dart @@ -0,0 +1,312 @@ +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +@Tags(['daily']) +@TestOn('vm') +@Timeout(Duration(minutes: 5)) +library; + +import 'dart:async'; + +import 'package:dwds/expression_compiler.dart'; +import 'package:test/test.dart'; +import 'package:test_common/logging.dart'; +import 'package:test_common/test_sdk_configuration.dart'; +import 'package:vm_service/vm_service.dart'; +import 'package:vm_service_interface/vm_service_interface.dart'; +import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart'; + +import 'fixtures/context.dart'; +import 'fixtures/project.dart'; +import 'fixtures/utilities.dart'; + +void main() { + // Enable verbose logging for debugging. + final debug = false; + final provider = TestSdkConfigurationProvider( + verbose: debug, + canaryFeatures: true, + ddcModuleFormat: ModuleFormat.ddc, + ); + final project = TestProject.testHotRestartBreakpoints; + final context = TestContext(project, provider); + final mainFile = project.dartEntryFileName; + final callLogMarker = 'callLog'; + + tearDownAll(provider.dispose); + + final edits = <({String file, String originalString, String newString})>[]; + + void makeEdit(String file, String originalString, String newString) { + if (file == project.dartEntryFileName) { + context.makeEditToDartEntryFile( + toReplace: originalString, + replaceWith: newString, + ); + } else { + context.makeEditToDartLibFile( + libFileName: file, + toReplace: originalString, + replaceWith: newString, + ); + } + edits.add(( + file: file, + originalString: originalString, + newString: newString, + )); + } + + Future makeEditAndRecompile( + String file, + String originalString, + String newString, + ) async { + makeEdit(file, originalString, newString); + await context.recompile(fullRestart: true); + } + + void undoEdits() { + for (var i = edits.length - 1; i >= 0; i--) { + final edit = edits[i]; + if (edit.file == project.dartEntryFileName) { + context.makeEditToDartEntryFile( + toReplace: edit.newString, + replaceWith: edit.originalString, + ); + } else { + context.makeEditToDartLibFile( + libFileName: edit.file, + toReplace: edit.newString, + replaceWith: edit.originalString, + ); + } + } + edits.clear(); + } + + group('when pause_isolates_on_start is true', () { + late VmService client; + late VmServiceInterface service; + late Stream stream; + // Fetch the log statements that are sent to console. + final consoleLogs = []; + late StreamSubscription consoleSubscription; + + setUp(() async { + setCurrentLogWriter(debug: debug); + await context.setUp( + testSettings: TestSettings( + enableExpressionEvaluation: true, + compilationMode: CompilationMode.frontendServer, + moduleFormat: provider.ddcModuleFormat, + canaryFeatures: provider.canaryFeatures, + ), + ); + client = await context.connectFakeClient(); + await client.setFlag('pause_isolates_on_start', 'true'); + await client.streamListen('Isolate'); + service = context.service; + await service.streamListen('Debug'); + stream = service.onEvent('Debug'); + consoleSubscription = context.webkitDebugger.onConsoleAPICalled.listen( + (e) => consoleLogs.add(e.args.first.value as String), + ); + }); + + tearDown(() async { + await consoleSubscription.cancel(); + consoleLogs.clear(); + undoEdits(); + await context.tearDown(); + }); + + Future addBreakpoint({ + required String file, + required String breakpointMarker, + }) async { + final vm = await client.getVM(); + final isolateId = vm.isolates!.first.id!; + final scriptList = await client.getScripts(isolateId); + final scriptRef = scriptList.scripts!.firstWhere( + (script) => script.uri!.contains(file), + ); + final bpLine = await context.findBreakpointLine( + breakpointMarker, + isolateId, + scriptRef, + ); + return await client.addBreakpointWithScriptUri( + isolateId, + scriptRef.uri!, + bpLine, + ); + } + + Future resume() async { + final vm = await client.getVM(); + final isolate = await client.getIsolate(vm.isolates!.first.id!); + await client.resume(isolate.id!); + } + + Future hotRestartAndHandlePausePost( + List<({String file, String breakpointMarker})> breakpoints, + ) async { + final eventsDone = expectLater( + client.onIsolateEvent, + emitsThrough( + emitsInOrder([ + _hasKind(EventKind.kIsolateExit), + _hasKind(EventKind.kIsolateStart), + _hasKind(EventKind.kIsolateRunnable), + ]), + ), + ); + + final waitForPausePost = stream.firstWhere( + (event) => event.kind == EventKind.kPausePostRequest, + ); + + final hotRestart = context.getRegisteredServiceExtension('hotRestart'); + expect( + await client.callServiceExtension(hotRestart!), + const TypeMatcher(), + ); + + await eventsDone; + + // DWDS defers running main after a hot restart until the client (e.g. + // DAP) resumes. Client should listen for this event, remove breakpoints + // (we don't remove them here as DWDS already removes them), and + // reregister breakpoints (which will be registered in the new files), and + // resume. + await waitForPausePost; + for (final breakpoint in breakpoints) { + await addBreakpoint( + file: breakpoint.file, + breakpointMarker: breakpoint.breakpointMarker, + ); + } + await resume(); + } + + test('after edit and hot restart, breakpoint is in new file', () async { + final oldLog = 'main gen0'; + final newLog = 'main gen1'; + + await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker); + + await makeEditAndRecompile(mainFile, oldLog, newLog); + + await hotRestartAndHandlePausePost([ + (file: mainFile, breakpointMarker: callLogMarker), + ]); + + // Should break at `callLog`. + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + expect(consoleLogs.contains(newLog), false); + await resume(); + expect(consoleLogs.contains(newLog), true); + }); + + test('add adding line, hot restart, removing line, and hot restart, ' + 'breakpoint is correct across both hot restarts', () async { + final genLog = 'main gen0'; + + await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker); + + // Add an extra log before the existing log. + final extraLog = 'hot reload'; + final oldString = "log('"; + final newString = "log('$extraLog');\n$oldString"; + await makeEditAndRecompile(mainFile, oldString, newString); + + await hotRestartAndHandlePausePost([ + (file: mainFile, breakpointMarker: callLogMarker), + ]); + + // Should break at `callLog`. + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + expect(consoleLogs.contains(extraLog), true); + expect(consoleLogs.contains(genLog), false); + await resume(); + expect(consoleLogs.contains(genLog), true); + + consoleLogs.clear(); + + // Remove the line we just added. + await makeEditAndRecompile(mainFile, newString, oldString); + + await hotRestartAndHandlePausePost([ + (file: mainFile, breakpointMarker: callLogMarker), + ]); + + // Should break at `callLog`. + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + expect(consoleLogs.contains(extraLog), false); + expect(consoleLogs.contains(genLog), false); + await resume(); + expect(consoleLogs.contains(genLog), true); + }); + + test( + 'after adding file and putting breakpoint in it, breakpoint is correctly ' + 'registered', + () async { + final genLog = 'main gen0'; + + await addBreakpoint(file: mainFile, breakpointMarker: callLogMarker); + + // Add a library file, import it, and then refer to it in the log. + final libFile = 'library.dart'; + final libGenLog = 'lib gen0'; + final libValueMarker = 'libValue'; + context.addLibraryFile( + libFileName: libFile, + contents: '''String get libraryValue { + return '$libGenLog'; // Breakpoint: $libValueMarker + }''', + ); + final oldImports = "import 'dart:js_interop';"; + final newImports = + '$oldImports\n' + "import 'package:_test_hot_restart_breakpoints/library.dart';"; + makeEdit(mainFile, oldImports, newImports); + final oldLog = "log('$genLog');"; + final newLog = "log('\$libraryValue');"; + await makeEditAndRecompile(mainFile, oldLog, newLog); + + await hotRestartAndHandlePausePost([ + (file: mainFile, breakpointMarker: callLogMarker), + (file: libFile, breakpointMarker: libValueMarker), + ]); + + // Should break at `callLog`. + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + expect(consoleLogs.contains(libGenLog), false); + await resume(); + // Should break at `libValue`. + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + expect(consoleLogs.contains(libGenLog), false); + await resume(); + expect(consoleLogs.contains(libGenLog), true); + + context.removeLibraryFile(libFileName: libFile); + }, + ); + }); +} + +TypeMatcher _hasKind(String kind) => + isA().having((e) => e.kind, 'kind', kind); diff --git a/dwds/web/reloader/ddc_library_bundle_restarter.dart b/dwds/web/reloader/ddc_library_bundle_restarter.dart index 56fd7b531..77f2eab9f 100644 --- a/dwds/web/reloader/ddc_library_bundle_restarter.dart +++ b/dwds/web/reloader/ddc_library_bundle_restarter.dart @@ -6,6 +6,8 @@ import 'dart:async'; import 'dart:convert'; import 'dart:js_interop'; +import 'package:dwds/src/utilities/shared.dart'; + import 'restarter.dart'; @JS('dartDevEmbedder') @@ -18,6 +20,11 @@ extension type _DartDevEmbedder._(JSObject _) implements JSObject { JSArray filesToLoad, JSArray librariesToReload, ); + external _DartDevEmbedderConfig get config; +} + +extension type _DartDevEmbedderConfig._(JSObject _) implements JSObject { + external JSFunction? capturedMainHandler; } extension type _Debugger._(JSObject _) implements JSObject { @@ -50,9 +57,26 @@ extension on JSArray { } class DdcLibraryBundleRestarter implements Restarter { + Future _runMainWhenReady( + Future? readyToRunMain, + JSFunction runMain, + ) async { + if (readyToRunMain != null) { + await readyToRunMain; + } + + runMain.callAsFunction(); + } + @override Future restart({String? runId, Future? readyToRunMain}) async { await _dartDevEmbedder.debugger.maybeInvokeFlutterDisassemble(); + final mainHandler = + (JSFunction runMain) { + _dartDevEmbedder.config.capturedMainHandler = null; + safeUnawaited(_runMainWhenReady(readyToRunMain, runMain)); + }.toJS; + _dartDevEmbedder.config.capturedMainHandler = mainHandler; await _dartDevEmbedder.hotRestart().toDart; return true; } diff --git a/fixtures/_testHotRestartBreakpoints/pubspec.yaml b/fixtures/_testHotRestartBreakpoints/pubspec.yaml new file mode 100644 index 000000000..12a48a557 --- /dev/null +++ b/fixtures/_testHotRestartBreakpoints/pubspec.yaml @@ -0,0 +1,9 @@ +name: _test_hot_restart_breakpoints +version: 1.0.0 +description: >- + A fake package used for testing hot restart breakpoints. +publish_to: none + +environment: + sdk: ^3.7.0 + diff --git a/fixtures/_testHotRestartBreakpoints/web/index.html b/fixtures/_testHotRestartBreakpoints/web/index.html new file mode 100644 index 000000000..d93440a94 --- /dev/null +++ b/fixtures/_testHotRestartBreakpoints/web/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/fixtures/_testHotRestartBreakpoints/web/main.dart b/fixtures/_testHotRestartBreakpoints/web/main.dart new file mode 100644 index 000000000..fad2e1777 --- /dev/null +++ b/fixtures/_testHotRestartBreakpoints/web/main.dart @@ -0,0 +1,12 @@ +// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:js_interop'; + +@JS('console.log') +external void log(String _); + +void main() { + log('main gen0'); // Breakpoint: callLog +} From 6c5747777815e9eb4a736f5b062abead2155681f Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Thu, 22 May 2025 17:29:22 -0700 Subject: [PATCH 2/8] Add changelog entry --- dwds/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md index 03fb4191e..6d88f48d0 100644 --- a/dwds/CHANGELOG.md +++ b/dwds/CHANGELOG.md @@ -2,6 +2,7 @@ - Added WebSocket-based hot reload support: `reloadSources` in `ChromeProxyService` and `DevHandler` now handle hot reload requests and responses over WebSockets. - Refactored the injected client to use a reusable function for handling hot reload requests and responses over WebSockets. +- Added support for breakpoint registering on a hot restart with the DDC library bundle format using PausePostRequests. ## 24.3.10 From 86799f163eb30d61a28dcc70d5700b8cd4a4b61c Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Thu, 22 May 2025 19:55:13 -0700 Subject: [PATCH 3/8] Create file in addLibraryFile --- dwds/test/fixtures/context.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/dwds/test/fixtures/context.dart b/dwds/test/fixtures/context.dart index f14be2821..da472ba28 100644 --- a/dwds/test/fixtures/context.dart +++ b/dwds/test/fixtures/context.dart @@ -585,6 +585,7 @@ class TestContext { void addLibraryFile({required String libFileName, required String contents}) { final file = File(project.dartLibFilePath(libFileName)); + file.createSync(); file.writeAsStringSync(contents); } From a4b9ff91b3a92fa587d78e630ed5123abf0e8d24 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Fri, 23 May 2025 09:36:45 -0700 Subject: [PATCH 4/8] Recursively create library folder if it doesn't exist yet --- dwds/test/fixtures/context.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dwds/test/fixtures/context.dart b/dwds/test/fixtures/context.dart index da472ba28..3f7090725 100644 --- a/dwds/test/fixtures/context.dart +++ b/dwds/test/fixtures/context.dart @@ -585,7 +585,8 @@ class TestContext { void addLibraryFile({required String libFileName, required String contents}) { final file = File(project.dartLibFilePath(libFileName)); - file.createSync(); + // Library folder may not exist yet, so create it. + file.createSync(recursive: true); file.writeAsStringSync(contents); } From 675980670bc3d5229195f7182be541e23018d855 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Tue, 27 May 2025 16:28:48 -0700 Subject: [PATCH 5/8] Address review comments --- .../src/services/chrome_proxy_service.dart | 5 +-- dwds/test/common/hot_restart_common.dart | 37 +++++++++++++++++++ dwds/test/hot_restart_breakpoints_test.dart | 2 +- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/dwds/lib/src/services/chrome_proxy_service.dart b/dwds/lib/src/services/chrome_proxy_service.dart index c8747b6d3..3141d2c57 100644 --- a/dwds/lib/src/services/chrome_proxy_service.dart +++ b/dwds/lib/src/services/chrome_proxy_service.dart @@ -301,9 +301,8 @@ class ChromeProxyService implements VmServiceInterface { /// with [destroyIsolate] and recreated with this method there is a hot /// restart or full page refresh. /// - /// If [newConnection] is true, does not recompute metadata information as - /// that is done only when we recreate the isolate the connection as source - /// data may have changed. + /// If [newConnection] is true, this method does not recompute metadata + /// information as the metadata couldn't have changed. Future createIsolate( AppConnection appConnection, { bool newConnection = false, diff --git a/dwds/test/common/hot_restart_common.dart b/dwds/test/common/hot_restart_common.dart index 4981b6c0d..de3539037 100644 --- a/dwds/test/common/hot_restart_common.dart +++ b/dwds/test/common/hot_restart_common.dart @@ -378,6 +378,43 @@ void runTests({ expect(source.contains(newString), isTrue); }); + test('can hot restart while paused', () async { + final client = context.debugConnection.vmService; + var vm = await client.getVM(); + var isolateId = vm.isolates!.first.id!; + await client.streamListen('Debug'); + final stream = client.onEvent('Debug'); + final scriptList = await client.getScripts(isolateId); + final main = scriptList.scripts!.firstWhere( + (script) => script.uri!.contains('main.dart'), + ); + final bpLine = await context.findBreakpointLine( + 'printCount', + isolateId, + main, + ); + await client.addBreakpoint(isolateId, main.id!, bpLine); + await stream.firstWhere( + (event) => event.kind == EventKind.kPauseBreakpoint, + ); + + await makeEditAndRecompile(); + final hotRestart = context.getRegisteredServiceExtension('hotRestart'); + await fakeClient.callServiceExtension(hotRestart!); + final source = await context.webDriver.pageSource; + + // Main is re-invoked which shouldn't clear the state. + expect(source.contains(originalString), isTrue); + expect(source.contains(newString), isTrue); + + vm = await client.getVM(); + isolateId = vm.isolates!.first.id!; + final isolate = await client.getIsolate(isolateId); + + // Previous breakpoint should be cleared. + expect(isolate.breakpoints!.isEmpty, isTrue); + }); + test('can evaluate expressions after hot restart', () async { final client = context.debugConnection.vmService; diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart index 0be4ac2ca..cdeb2e049 100644 --- a/dwds/test/hot_restart_breakpoints_test.dart +++ b/dwds/test/hot_restart_breakpoints_test.dart @@ -212,7 +212,7 @@ void main() { expect(consoleLogs.contains(newLog), true); }); - test('add adding line, hot restart, removing line, and hot restart, ' + test('after adding line, hot restart, removing line, and hot restart, ' 'breakpoint is correct across both hot restarts', () async { final genLog = 'main gen0'; From 473eb87fc938f388ea63dccc1c0f3afff14f85f4 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Fri, 30 May 2025 13:58:43 -0700 Subject: [PATCH 6/8] Address review comments about removed breakpoints and move expectations of console logs after resume to use a future instead --- dwds/test/hot_restart_breakpoints_test.dart | 33 ++++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart index cdeb2e049..9463b2314 100644 --- a/dwds/test/hot_restart_breakpoints_test.dart +++ b/dwds/test/hot_restart_breakpoints_test.dart @@ -150,6 +150,23 @@ void main() { await client.resume(isolate.id!); } + // When the program is executing, we want to check that at some point it + // will execute code that will emit [expectedString]. + Future resumeAndExpectLog(String expectedString) async { + final completer = Completer(); + final newSubscription = context.webkitDebugger.onConsoleAPICalled.listen(( + e, + ) { + if (e.args.first.value == expectedString) { + completer.complete(); + } + }); + await resume(); + await completer.future.then((_) { + newSubscription.cancel(); + }); + } + Future hotRestartAndHandlePausePost( List<({String file, String breakpointMarker})> breakpoints, ) async { @@ -182,6 +199,10 @@ void main() { // reregister breakpoints (which will be registered in the new files), and // resume. await waitForPausePost; + // Verify DWDS has already removed the breakpoints at this point. + final vm = await client.getVM(); + final isolate = await service.getIsolate(vm.isolates!.first.id!); + expect(isolate.breakpoints, isEmpty); for (final breakpoint in breakpoints) { await addBreakpoint( file: breakpoint.file, @@ -208,8 +229,7 @@ void main() { (event) => event.kind == EventKind.kPauseBreakpoint, ); expect(consoleLogs.contains(newLog), false); - await resume(); - expect(consoleLogs.contains(newLog), true); + await resumeAndExpectLog(newLog); }); test('after adding line, hot restart, removing line, and hot restart, ' @@ -234,8 +254,7 @@ void main() { ); expect(consoleLogs.contains(extraLog), true); expect(consoleLogs.contains(genLog), false); - await resume(); - expect(consoleLogs.contains(genLog), true); + await resumeAndExpectLog(genLog); consoleLogs.clear(); @@ -252,8 +271,7 @@ void main() { ); expect(consoleLogs.contains(extraLog), false); expect(consoleLogs.contains(genLog), false); - await resume(); - expect(consoleLogs.contains(genLog), true); + await resumeAndExpectLog(genLog); }); test( @@ -299,8 +317,7 @@ void main() { (event) => event.kind == EventKind.kPauseBreakpoint, ); expect(consoleLogs.contains(libGenLog), false); - await resume(); - expect(consoleLogs.contains(libGenLog), true); + await resumeAndExpectLog(libGenLog); context.removeLibraryFile(libFileName: libFile); }, From aa54169f94ea626ba38f43c954d1ad508c472187 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Fri, 30 May 2025 17:48:07 -0700 Subject: [PATCH 7/8] Register future waiting for breakpoint before we come across it --- dwds/test/hot_restart_breakpoints_test.dart | 34 ++++++++++++--------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart index 9463b2314..60d8e799f 100644 --- a/dwds/test/hot_restart_breakpoints_test.dart +++ b/dwds/test/hot_restart_breakpoints_test.dart @@ -212,6 +212,9 @@ void main() { await resume(); } + Future waitForBreakpoint() => + stream.firstWhere((event) => event.kind == EventKind.kPauseBreakpoint); + test('after edit and hot restart, breakpoint is in new file', () async { final oldLog = 'main gen0'; final newLog = 'main gen1'; @@ -220,14 +223,14 @@ void main() { await makeEditAndRecompile(mainFile, oldLog, newLog); + final breakpointFuture = waitForBreakpoint(); + await hotRestartAndHandlePausePost([ (file: mainFile, breakpointMarker: callLogMarker), ]); // Should break at `callLog`. - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); + await breakpointFuture; expect(consoleLogs.contains(newLog), false); await resumeAndExpectLog(newLog); }); @@ -244,14 +247,14 @@ void main() { final newString = "log('$extraLog');\n$oldString"; await makeEditAndRecompile(mainFile, oldString, newString); + var breakpointFuture = waitForBreakpoint(); + await hotRestartAndHandlePausePost([ (file: mainFile, breakpointMarker: callLogMarker), ]); // Should break at `callLog`. - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); + await breakpointFuture; expect(consoleLogs.contains(extraLog), true); expect(consoleLogs.contains(genLog), false); await resumeAndExpectLog(genLog); @@ -261,14 +264,14 @@ void main() { // Remove the line we just added. await makeEditAndRecompile(mainFile, newString, oldString); + breakpointFuture = waitForBreakpoint(); + await hotRestartAndHandlePausePost([ (file: mainFile, breakpointMarker: callLogMarker), ]); // Should break at `callLog`. - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); + await breakpointFuture; expect(consoleLogs.contains(extraLog), false); expect(consoleLogs.contains(genLog), false); await resumeAndExpectLog(genLog); @@ -301,21 +304,22 @@ void main() { final newLog = "log('\$libraryValue');"; await makeEditAndRecompile(mainFile, oldLog, newLog); + var breakpointFuture = waitForBreakpoint(); + await hotRestartAndHandlePausePost([ (file: mainFile, breakpointMarker: callLogMarker), (file: libFile, breakpointMarker: libValueMarker), ]); // Should break at `callLog`. - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); + await breakpointFuture; expect(consoleLogs.contains(libGenLog), false); + + breakpointFuture = waitForBreakpoint(); + await resume(); // Should break at `libValue`. - await stream.firstWhere( - (event) => event.kind == EventKind.kPauseBreakpoint, - ); + await breakpointFuture; expect(consoleLogs.contains(libGenLog), false); await resumeAndExpectLog(libGenLog); From 0e518860be3e78454e47fe189d9c506a783ac14f Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Sun, 8 Jun 2025 11:07:58 -0700 Subject: [PATCH 8/8] Await main in hot restart tests to fix some race conditions - Recompile is needed for the frontend server even when no edits are made - Also use expectAll in hot_restart_breakpoints_test --- dwds/test/common/hot_restart_common.dart | 76 ++++++++++++++++--- dwds/test/hot_restart_breakpoints_test.dart | 5 +- .../_testSound/example/append_body/main.dart | 7 ++ 3 files changed, 74 insertions(+), 14 deletions(-) diff --git a/dwds/test/common/hot_restart_common.dart b/dwds/test/common/hot_restart_common.dart index de3539037..f1f0fce4a 100644 --- a/dwds/test/common/hot_restart_common.dart +++ b/dwds/test/common/hot_restart_common.dart @@ -7,6 +7,8 @@ @Timeout(Duration(minutes: 5)) library; +import 'dart:async'; + import 'package:dwds/dwds.dart'; import 'package:dwds/expression_compiler.dart'; import 'package:test/test.dart'; @@ -32,19 +34,26 @@ void runTests({ tearDownAll(provider.dispose); - Future makeEditAndRecompile() async { - context.makeEditToDartEntryFile( - toReplace: originalString, - replaceWith: newString, - ); + Future recompile({bool hasEdits = false}) async { if (compilationMode == CompilationMode.frontendServer) { await context.recompile(fullRestart: true); } else { assert(compilationMode == CompilationMode.buildDaemon); - await context.waitForSuccessfulBuild(propagateToBrowser: true); + if (hasEdits) { + // Only gets a new build if there were edits. + await context.waitForSuccessfulBuild(propagateToBrowser: true); + } } } + Future makeEditAndRecompile() async { + context.makeEditToDartEntryFile( + toReplace: originalString, + replaceWith: newString, + ); + await recompile(hasEdits: true); + } + void undoEdit() { context.makeEditToDartEntryFile( toReplace: newString, @@ -52,6 +61,27 @@ void runTests({ ); } + /// Wait for main to finish executing before checking expectations by checking + /// for a log output. + /// + /// If [debuggingEnabled] is false, we can't check for Chrome logs and instead + /// wait 1 second. + // TODO(srujzs): We should do something less prone to race conditions when + // debugging is disabled. + Future waitForMainToExecute({bool debuggingEnabled = true}) async { + if (!debuggingEnabled) return Future.delayed(const Duration(seconds: 1)); + final completer = Completer(); + final expectedString = 'main executed'; + final subscription = context.webkitDebugger.onConsoleAPICalled.listen((e) { + if (e.args.first.value == expectedString) { + completer.complete(); + } + }); + await completer.future.then((_) { + subscription.cancel(); + }); + } + group( 'Injected client with live reload', () { @@ -74,7 +104,9 @@ void runTests({ }); test('can live reload changes ', () async { + final mainDone = waitForMainToExecute(); await makeEditAndRecompile(); + await mainDone; final source = await context.webDriver.pageSource; // A full reload should clear the state. @@ -105,8 +137,9 @@ void runTests({ }); test('can live reload changes ', () async { + final mainDone = waitForMainToExecute(debuggingEnabled: false); await makeEditAndRecompile(); - + await mainDone; final source = await context.webDriver.pageSource; // A full reload should clear the state. @@ -138,8 +171,9 @@ void runTests({ }); test('can live reload changes ', () async { + final mainDone = waitForMainToExecute(debuggingEnabled: false); await makeEditAndRecompile(); - + await mainDone; final source = await context.webDriver.pageSource; // A full reload should clear the state. @@ -281,6 +315,7 @@ void runTests({ ]), ), ); + final mainDone = waitForMainToExecute(); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); expect( await fakeClient.callServiceExtension(hotRestart!), @@ -288,6 +323,7 @@ void runTests({ ); await eventsDone; + await mainDone; final source = await context.webDriver.pageSource; // Main is re-invoked which shouldn't clear the state. @@ -324,6 +360,8 @@ void runTests({ "registerExtension('ext.foo', $callback)", ); + await recompile(); + final mainDone = waitForMainToExecute(); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); expect( await fakeClient.callServiceExtension(hotRestart!), @@ -342,6 +380,7 @@ void runTests({ ); await eventsDone; + await mainDone; final source = await context.webDriver.pageSource; // Main is re-invoked which shouldn't clear the state. @@ -363,7 +402,7 @@ void runTests({ ]), ), ); - + final mainDone = waitForMainToExecute(); final fullReload = context.getRegisteredServiceExtension('fullReload'); expect( await fakeClient.callServiceExtension(fullReload!), @@ -371,6 +410,7 @@ void runTests({ ); await eventsDone; + await mainDone; final source = await context.webDriver.pageSource; // Should see only the new text @@ -399,8 +439,12 @@ void runTests({ ); await makeEditAndRecompile(); + final mainDone = waitForMainToExecute(); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); await fakeClient.callServiceExtension(hotRestart!); + + await mainDone; + final source = await context.webDriver.pageSource; // Main is re-invoked which shouldn't clear the state. @@ -418,6 +462,7 @@ void runTests({ test('can evaluate expressions after hot restart', () async { final client = context.debugConnection.vmService; + await recompile(); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); await fakeClient.callServiceExtension(hotRestart!); @@ -461,8 +506,9 @@ void runTests({ }); test('can hot restart changes ', () async { + final mainDone = waitForMainToExecute(); await makeEditAndRecompile(); - + await mainDone; final source = await context.webDriver.pageSource; // Main is re-invoked which shouldn't clear the state. @@ -521,8 +567,9 @@ void runTests({ }); test('can hot restart changes ', () async { + final mainDone = waitForMainToExecute(debuggingEnabled: false); await makeEditAndRecompile(); - + await mainDone; final source = await context.webDriver.pageSource; // Main is re-invoked which shouldn't clear the state. @@ -582,6 +629,7 @@ void runTests({ ), ); + final mainDone = waitForMainToExecute(); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); expect( await fakeClient.callServiceExtension(hotRestart!), @@ -597,6 +645,8 @@ void runTests({ final isolateId = vm.isolates!.first.id!; await client.resume(isolateId); + await mainDone; + final sourceAfterResume = await context.webDriver.pageSource; expect(sourceAfterResume.contains(newString), isTrue); }, @@ -605,8 +655,8 @@ void runTests({ test( 'after page refresh, does not run app until there is a resume event', () async { + final mainDone = waitForMainToExecute(); await makeEditAndRecompile(); - await context.webDriver.driver.refresh(); final eventsDone = expectLater( @@ -629,6 +679,8 @@ void runTests({ final isolateId = vm.isolates!.first.id!; await client.resume(isolateId); + await mainDone; + final sourceAfterResume = await context.webDriver.pageSource; expect(sourceAfterResume.contains(newString), isTrue); }, diff --git a/dwds/test/hot_restart_breakpoints_test.dart b/dwds/test/hot_restart_breakpoints_test.dart index 60d8e799f..a8f11b078 100644 --- a/dwds/test/hot_restart_breakpoints_test.dart +++ b/dwds/test/hot_restart_breakpoints_test.dart @@ -181,8 +181,9 @@ void main() { ), ); - final waitForPausePost = stream.firstWhere( - (event) => event.kind == EventKind.kPausePostRequest, + final waitForPausePost = expectLater( + stream, + emitsThrough(_hasKind(EventKind.kPausePostRequest)), ); final hotRestart = context.getRegisteredServiceExtension('hotRestart'); diff --git a/fixtures/_testSound/example/append_body/main.dart b/fixtures/_testSound/example/append_body/main.dart index c9000e381..c030eac89 100644 --- a/fixtures/_testSound/example/append_body/main.dart +++ b/fixtures/_testSound/example/append_body/main.dart @@ -7,6 +7,10 @@ import 'dart:developer'; // TODO: https://github.com/dart-lang/webdev/issues/2508 // ignore: deprecated_member_use import 'dart:html'; +import 'dart:js_interop'; + +@JS('console.log') +external void log(String _); void main() { var count = 0; @@ -23,4 +27,7 @@ void main() { document.body?.appendText('end disassemble '); return ServiceExtensionResponse.result('{}'); }); + + // Wait for this print statement so that we know main is done executing. + log('main executed'); }