diff --git a/Makefile b/Makefile index 04a62e8..6c18388 100644 --- a/Makefile +++ b/Makefile @@ -13,4 +13,6 @@ proto: format: flutter format --set-exit-if-changed -l 100 . +e2ee: dart compile js .\web\e2ee.worker.dart -o .\example\web\e2ee.worker.dart.js + .PHONY: proto format diff --git a/README.md b/README.md index bc977de..90e81c1 100644 --- a/README.md +++ b/README.md @@ -20,13 +20,13 @@ More Docs and guides are available at [https://docs.livekit.io](https://docs.liv ## Current supported features -| Feature | Subscribe/Publish | Simulcast | Background audio | Screen sharing | -| :-----: | :---------------: | :-------: | :--------------: | :------------: | -| Web | 🟢 | 🟢 | 🟢 | 🟢 | -| iOS | 🟢 | 🟢 | 🟢 | 🟢 | -| Android | 🟢 | 🟢 | 🟢 | 🟢 | -| Mac | 🟢 | 🟢 | 🟢 | 🟢 | -| Windows | 🟢 | 🟢 | 🟢 | 🟢 | +| Feature | Subscribe/Publish | Simulcast | Background audio | Screen sharing | End to End Encryption | +| :-----: | :---------------: | :-------: | :--------------: | :------------: | :------------: | +| Web | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| iOS | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| Android | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| Mac | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | +| Windows | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 = Available @@ -215,6 +215,21 @@ try { } ``` +### End to End Encryption + +LiveKit supports end-to-end encryption for audio/video data sent over the network. +By default, the native platform can support E2EE without any settings, but for flutter web, you need to use the following steps to create `e2ee.worker.dart.js` file. + +```bash +# for example app +dart compile js .\web\e2ee.worker.dart -o .\example\web\e2ee.worker.dart.js +# for your project +export YOU_PROJECT_DIR=your_project_dir +git clone https://github.com/livekit/client-sdk-flutter.git +cd client-sdk-flutter && flutter pub get +dart compile js .\web\e2ee.worker.dart -o ${YOU_PROJECT_DIR}\web\e2ee.worker.dart.js +``` + ### Advanced track manipulation The setCameraEnabled/setMicrophoneEnabled helpers are wrappers around the Track API. diff --git a/analysis_options.yaml b/analysis_options.yaml index a63dcfc..ab39238 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -30,6 +30,7 @@ analyzer: - '**/*.pbenum.dart' - '**/*.pbjson.dart' - '**/*.pbserver.dart' + - 'web/*.dart' linter: rules: @@ -39,3 +40,4 @@ linter: prefer_single_quotes: true unnecessary_brace_in_string_interps: false unawaited_futures: true + depend_on_referenced_packages: false diff --git a/example/lib/exts.dart b/example/lib/exts.dart index 6bdcd23..74d68b2 100644 --- a/example/lib/exts.dart +++ b/example/lib/exts.dart @@ -194,4 +194,5 @@ enum SimulateScenarioResult { serverLeave, switchCandidate, clear, + e2eeKeyRatchet, } diff --git a/example/lib/pages/connect.dart b/example/lib/pages/connect.dart index 8ff76f7..e0684bb 100644 --- a/example/lib/pages/connect.dart +++ b/example/lib/pages/connect.dart @@ -25,14 +25,18 @@ class _ConnectPageState extends State { static const _storeKeyAdaptiveStream = 'adaptive-stream'; static const _storeKeyDynacast = 'dynacast'; static const _storeKeyFastConnect = 'fast-connect'; + static const _storeKeyE2EE = 'e2ee'; + static const _storeKeySharedKey = 'shared-key'; final _uriCtrl = TextEditingController(); final _tokenCtrl = TextEditingController(); + final _sharedKeyCtrl = TextEditingController(); bool _simulcast = true; bool _adaptiveStream = true; bool _dynacast = true; bool _busy = false; bool _fastConnect = false; + bool _e2ee = false; @override void initState() { @@ -56,11 +60,15 @@ class _ConnectPageState extends State { _tokenCtrl.text = const bool.hasEnvironment('TOKEN') ? const String.fromEnvironment('TOKEN') : prefs.getString(_storeKeyToken) ?? ''; + _sharedKeyCtrl.text = const bool.hasEnvironment('E2EEKEY') + ? const String.fromEnvironment('E2EEKEY') + : prefs.getString(_storeKeySharedKey) ?? ''; setState(() { _simulcast = prefs.getBool(_storeKeySimulcast) ?? true; _adaptiveStream = prefs.getBool(_storeKeyAdaptiveStream) ?? true; _dynacast = prefs.getBool(_storeKeyDynacast) ?? true; _fastConnect = prefs.getBool(_storeKeyFastConnect) ?? false; + _e2ee = prefs.getBool(_storeKeyE2EE) ?? false; }); } @@ -69,10 +77,12 @@ class _ConnectPageState extends State { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_storeKeyUri, _uriCtrl.text); await prefs.setString(_storeKeyToken, _tokenCtrl.text); + await prefs.setString(_storeKeySharedKey, _sharedKeyCtrl.text); await prefs.setBool(_storeKeySimulcast, _simulcast); await prefs.setBool(_storeKeyAdaptiveStream, _adaptiveStream); await prefs.setBool(_storeKeyDynacast, _dynacast); await prefs.setBool(_storeKeyFastConnect, _fastConnect); + await prefs.setBool(_storeKeyE2EE, _e2ee); } Future _connect(BuildContext ctx) async { @@ -93,6 +103,13 @@ class _ConnectPageState extends State { // Create a Listener before connecting final listener = room.createListener(); + E2EEOptions? e2eeOptions; + if (_e2ee) { + final keyProvider = await BaseKeyProvider.create(); + e2eeOptions = E2EEOptions(keyProvider: keyProvider); + var sharedKey = _sharedKeyCtrl.text; + await keyProvider.setKey(sharedKey); + } // Try to connect to the room // This will throw an Exception if it fails for any reason. @@ -107,6 +124,7 @@ class _ConnectPageState extends State { ), defaultScreenShareCaptureOptions: const ScreenShareCaptureOptions(useiOSBroadcastExtension: true), + e2eeOptions: e2eeOptions, ), fastConnectOptions: _fastConnect ? FastConnectOptions( @@ -115,6 +133,7 @@ class _ConnectPageState extends State { ) : null, ); + await Navigator.push( ctx, MaterialPageRoute(builder: (_) => RoomPage(room, listener)), @@ -136,6 +155,13 @@ class _ConnectPageState extends State { }); } + void _setE2EE(bool? value) async { + if (value == null || _e2ee == value) return; + setState(() { + _e2ee = value; + }); + } + void _setAdaptiveStream(bool? value) async { if (value == null || _adaptiveStream == value) return; setState(() { @@ -192,6 +218,26 @@ class _ConnectPageState extends State { ctrl: _tokenCtrl, ), ), + Padding( + padding: const EdgeInsets.only(bottom: 25), + child: LKTextField( + label: 'Shared Key', + ctrl: _sharedKeyCtrl, + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text('E2EE'), + Switch( + value: _e2ee, + onChanged: (value) => _setE2EE(value), + ), + ], + ), + ), Padding( padding: const EdgeInsets.only(bottom: 5), child: Row( diff --git a/example/lib/pages/room.dart b/example/lib/pages/room.dart index 0a74645..7a7540d 100644 --- a/example/lib/pages/room.dart +++ b/example/lib/pages/room.dart @@ -66,6 +66,7 @@ class _RoomPageState extends State { }) ..on((_) => _sortParticipants()) ..on((_) => _sortParticipants()) + ..on(_onE2EEStateEvent) ..on((event) { print( 'Participant name updated: ${event.participant.identity}, name => ${event.name}'); @@ -102,6 +103,10 @@ class _RoomPageState extends State { _sortParticipants(); } + void _onE2EEStateEvent(TrackE2EEStateEvent e2eeState) { + print('e2ee state: $e2eeState'); + } + void _sortParticipants() { List userMediaTracks = []; List screenTracks = []; diff --git a/example/lib/widgets/controls.dart b/example/lib/widgets/controls.dart index 3856a75..a4a6de1 100644 --- a/example/lib/widgets/controls.dart +++ b/example/lib/widgets/controls.dart @@ -226,6 +226,11 @@ class _ControlsWidgetState extends State { final result = await context.showSimulateScenarioDialog(); if (result != null) { print('${result}'); + + if (SimulateScenarioResult.e2eeKeyRatchet == result) { + await widget.room.e2eeManager?.ratchetKey(); + } + await widget.room.sendSimulateScenario( signalReconnect: result == SimulateScenarioResult.signalReconnect ? true : null, diff --git a/example/lib/widgets/participant.dart b/example/lib/widgets/participant.dart index e26b3f2..d0b202d 100644 --- a/example/lib/widgets/participant.dart +++ b/example/lib/widgets/participant.dart @@ -153,6 +153,8 @@ abstract class _ParticipantWidgetState firstAudioPublication?.subscribed == true, connectionQuality: widget.participant.connectionQuality, isScreenShare: widget.isScreenShare, + enabledE2EE: widget.participant.firstTrackEncryptionType != + EncryptionType.kNone, ), ], ), diff --git a/example/lib/widgets/participant_info.dart b/example/lib/widgets/participant_info.dart index b1b0035..19049d2 100644 --- a/example/lib/widgets/participant_info.dart +++ b/example/lib/widgets/participant_info.dart @@ -18,12 +18,14 @@ class ParticipantInfoWidget extends StatelessWidget { final bool audioAvailable; final ConnectionQuality connectionQuality; final bool isScreenShare; + final bool enabledE2EE; const ParticipantInfoWidget({ this.title, this.audioAvailable = true, this.connectionQuality = ConnectionQuality.unknown, this.isScreenShare = false, + this.enabledE2EE = false, Key? key, }) : super(key: key); @@ -77,6 +79,14 @@ class ParticipantInfoWidget extends StatelessWidget { size: 16, ), ), + Padding( + padding: const EdgeInsets.only(left: 5), + child: Icon( + enabledE2EE ? EvaIcons.lock : EvaIcons.unlock, + color: enabledE2EE ? Colors.green : Colors.red, + size: 16, + ), + ), ], ), ); diff --git a/example/web/e2ee.worker.dart.js b/example/web/e2ee.worker.dart.js new file mode 100644 index 0000000..17799db --- /dev/null +++ b/example/web/e2ee.worker.dart.js @@ -0,0 +1,10595 @@ +// Generated by dart2js (NullSafetyMode.sound, csp, deferred-serialization, intern-composite-values), the Dart to JavaScript compiler version: 2.19.6. +// The code supports the following hooks: +// dartPrint(message): +// if this function is defined it is called instead of the Dart [print] +// method. +// +// dartMainRunner(main, args): +// if this function is defined, the Dart [main] method will not be invoked +// directly. Instead, a closure that will invoke [main], and its arguments +// [args] is passed to [dartMainRunner]. +// +// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId): +// if this function is defined, it will be called when a deferred library +// is loaded. It should load and eval the javascript of `uri`, and call +// successCallback. If it fails to do so, it should call errorCallback with +// an error. The loadId argument is the deferred import that resulted in +// this uri being loaded. +// +// dartCallInstrumentation(id, qualifiedName): +// if this function is defined, it will be called at each entry of a +// method or constructor. Used only when compiling programs with +// --experiment-call-instrumentation. +(function dartProgram() { + function copyProperties(from, to) { + var keys = Object.keys(from); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + to[key] = from[key]; + } + } + function mixinPropertiesHard(from, to) { + var keys = Object.keys(from); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!to.hasOwnProperty(key)) + to[key] = from[key]; + } + } + function mixinPropertiesEasy(from, to) { + Object.assign(to, from); + } + var supportsDirectProtoAccess = function() { + var cls = function() { + }; + cls.prototype = {p: {}}; + var object = new cls(); + if (!(object.__proto__ && object.__proto__.p === cls.prototype.p)) + return false; + try { + if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0) + return true; + if (typeof version == "function" && version.length == 0) { + var v = version(); + if (/^\d+\.\d+\.\d+\.\d+$/.test(v)) + return true; + } + } catch (_) { + } + return false; + }(); + function inherit(cls, sup) { + cls.prototype.constructor = cls; + cls.prototype["$is" + cls.name] = cls; + if (sup != null) { + if (supportsDirectProtoAccess) { + cls.prototype.__proto__ = sup.prototype; + return; + } + var clsPrototype = Object.create(sup.prototype); + copyProperties(cls.prototype, clsPrototype); + cls.prototype = clsPrototype; + } + } + function inheritMany(sup, classes) { + for (var i = 0; i < classes.length; i++) + inherit(classes[i], sup); + } + function mixinEasy(cls, mixin) { + mixinPropertiesEasy(mixin.prototype, cls.prototype); + cls.prototype.constructor = cls; + } + function mixinHard(cls, mixin) { + mixinPropertiesHard(mixin.prototype, cls.prototype); + cls.prototype.constructor = cls; + } + function lazyOld(holder, name, getterName, initializer) { + var uninitializedSentinel = holder; + holder[name] = uninitializedSentinel; + holder[getterName] = function() { + holder[getterName] = function() { + A.throwCyclicInit(name); + }; + var result; + var sentinelInProgress = initializer; + try { + if (holder[name] === uninitializedSentinel) { + result = holder[name] = sentinelInProgress; + result = holder[name] = initializer(); + } else + result = holder[name]; + } finally { + if (result === sentinelInProgress) + holder[name] = null; + holder[getterName] = function() { + return this[name]; + }; + } + return result; + }; + } + function lazy(holder, name, getterName, initializer) { + var uninitializedSentinel = holder; + holder[name] = uninitializedSentinel; + holder[getterName] = function() { + if (holder[name] === uninitializedSentinel) + holder[name] = initializer(); + holder[getterName] = function() { + return this[name]; + }; + return holder[name]; + }; + } + function lazyFinal(holder, name, getterName, initializer) { + var uninitializedSentinel = holder; + holder[name] = uninitializedSentinel; + holder[getterName] = function() { + if (holder[name] === uninitializedSentinel) { + var value = initializer(); + if (holder[name] !== uninitializedSentinel) + A.throwLateFieldADI(name); + holder[name] = value; + } + var finalValue = holder[name]; + holder[getterName] = function() { + return finalValue; + }; + return finalValue; + }; + } + function makeConstList(list) { + list.immutable$list = Array; + list.fixed$length = Array; + return list; + } + function convertToFastObject(properties) { + function t() { + } + t.prototype = properties; + new t(); + return properties; + } + function convertAllToFastObject(arrayOfObjects) { + for (var i = 0; i < arrayOfObjects.length; ++i) + convertToFastObject(arrayOfObjects[i]); + } + var functionCounter = 0; + function instanceTearOffGetter(isIntercepted, parameters) { + var cache = null; + return isIntercepted ? function(receiver) { + if (cache === null) + cache = A.closureFromTearOff(parameters); + return new cache(receiver, this); + } : function() { + if (cache === null) + cache = A.closureFromTearOff(parameters); + return new cache(this, null); + }; + } + function staticTearOffGetter(parameters) { + var cache = null; + return function() { + if (cache === null) + cache = A.closureFromTearOff(parameters).prototype; + return cache; + }; + } + var typesOffset = 0; + function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) { + if (typeof funType == "number") + funType += typesOffset; + return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess}; + } + function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) { + var parameters = tearOffParameters(holder, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, false); + var getterFunction = staticTearOffGetter(parameters); + holder[getterName] = getterFunction; + } + function installInstanceTearOff(prototype, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) { + isIntercepted = !!isIntercepted; + var parameters = tearOffParameters(prototype, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, !!needsDirectAccess); + var getterFunction = instanceTearOffGetter(isIntercepted, parameters); + prototype[getterName] = getterFunction; + } + function setOrUpdateInterceptorsByTag(newTags) { + var tags = init.interceptorsByTag; + if (!tags) { + init.interceptorsByTag = newTags; + return; + } + copyProperties(newTags, tags); + } + function setOrUpdateLeafTags(newTags) { + var tags = init.leafTags; + if (!tags) { + init.leafTags = newTags; + return; + } + copyProperties(newTags, tags); + } + function updateTypes(newTypes) { + var types = init.types; + var length = types.length; + types.push.apply(types, newTypes); + return length; + } + function updateHolder(holder, newHolder) { + copyProperties(newHolder, holder); + return holder; + } + var hunkHelpers = function() { + var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) { + return function(container, getterName, name, funType) { + return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex, false); + }; + }, + mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) { + return function(container, getterName, name, funType) { + return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex); + }; + }; + return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, lazyOld: lazyOld, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags}; + }(); + function initializeDeferredHunk(hunk) { + typesOffset = init.types.length; + hunk(hunkHelpers, init, holders, $); + } + var A = {JS_CONST: function JS_CONST() { + }, + LateError$fieldNI(fieldName) { + return new A.LateError("Field '" + fieldName + "' has not been initialized."); + }, + SystemHash_combine(hash, value) { + hash = hash + value & 536870911; + hash = hash + ((hash & 524287) << 10) & 536870911; + return hash ^ hash >>> 6; + }, + SystemHash_finish(hash) { + hash = hash + ((hash & 67108863) << 3) & 536870911; + hash ^= hash >>> 11; + return hash + ((hash & 16383) << 15) & 536870911; + }, + checkNotNullable(value, $name, $T) { + return value; + }, + SubListIterable$(_iterable, _start, _endOrLength, $E) { + A.RangeError_checkNotNegative(_start, "start"); + if (_endOrLength != null) { + A.RangeError_checkNotNegative(_endOrLength, "end"); + if (_start > _endOrLength) + A.throwExpression(A.RangeError$range(_start, 0, _endOrLength, "start", null)); + } + return new A.SubListIterable(_iterable, _start, _endOrLength, $E._eval$1("SubListIterable<0>")); + }, + MappedIterable_MappedIterable(iterable, $function, $S, $T) { + if (type$.EfficientLengthIterable_dynamic._is(iterable)) + return new A.EfficientLengthMappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>")); + return new A.MappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("MappedIterable<1,2>")); + }, + _CopyingBytesBuilder: function _CopyingBytesBuilder(t0) { + this.__internal$_length = 0; + this._buffer = t0; + }, + LateError: function LateError(t0) { + this._message = t0; + }, + CodeUnits: function CodeUnits(t0) { + this._string = t0; + }, + SentinelValue: function SentinelValue() { + }, + EfficientLengthIterable: function EfficientLengthIterable() { + }, + ListIterable: function ListIterable() { + }, + SubListIterable: function SubListIterable(t0, t1, t2, t3) { + var _ = this; + _.__internal$_iterable = t0; + _._start = t1; + _._endOrLength = t2; + _.$ti = t3; + }, + ListIterator: function ListIterator(t0, t1, t2) { + var _ = this; + _.__internal$_iterable = t0; + _.__internal$_length = t1; + _.__internal$_index = 0; + _.__internal$_current = null; + _.$ti = t2; + }, + MappedIterable: function MappedIterable(t0, t1, t2) { + this.__internal$_iterable = t0; + this._f = t1; + this.$ti = t2; + }, + EfficientLengthMappedIterable: function EfficientLengthMappedIterable(t0, t1, t2) { + this.__internal$_iterable = t0; + this._f = t1; + this.$ti = t2; + }, + MappedIterator: function MappedIterator(t0, t1, t2) { + var _ = this; + _.__internal$_current = null; + _._iterator = t0; + _._f = t1; + _.$ti = t2; + }, + MappedListIterable: function MappedListIterable(t0, t1, t2) { + this._source = t0; + this._f = t1; + this.$ti = t2; + }, + WhereIterable: function WhereIterable(t0, t1, t2) { + this.__internal$_iterable = t0; + this._f = t1; + this.$ti = t2; + }, + WhereIterator: function WhereIterator(t0, t1, t2) { + this._iterator = t0; + this._f = t1; + this.$ti = t2; + }, + FixedLengthListMixin: function FixedLengthListMixin() { + }, + UnmodifiableListMixin: function UnmodifiableListMixin() { + }, + UnmodifiableListBase: function UnmodifiableListBase() { + }, + Symbol: function Symbol(t0) { + this.__internal$_name = t0; + }, + unminifyOrTag(rawClassName) { + var preserved = init.mangledGlobalNames[rawClassName]; + if (preserved != null) + return preserved; + return rawClassName; + }, + isJsIndexable(object, record) { + var result; + if (record != null) { + result = record.x; + if (result != null) + return result; + } + return type$.JavaScriptIndexingBehavior_dynamic._is(object); + }, + S(value) { + var result; + if (typeof value == "string") + return value; + if (typeof value == "number") { + if (value !== 0) + return "" + value; + } else if (true === value) + return "true"; + else if (false === value) + return "false"; + else if (value == null) + return "null"; + result = J.toString$0$(value); + return result; + }, + Primitives_objectHashCode(object) { + var hash, + property = $.Primitives__identityHashCodeProperty; + if (property == null) + property = $.Primitives__identityHashCodeProperty = Symbol("identityHashCode"); + hash = object[property]; + if (hash == null) { + hash = Math.random() * 0x3fffffff | 0; + object[property] = hash; + } + return hash; + }, + Primitives_objectTypeName(object) { + return A.Primitives__objectTypeNameNewRti(object); + }, + Primitives__objectTypeNameNewRti(object) { + var interceptor, dispatchName, $constructor, constructorName; + if (object instanceof A.Object) + return A._rtiToString(A.instanceType(object), null); + interceptor = J.getInterceptor$(object); + if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type$.UnknownJavaScriptObject._is(object)) { + dispatchName = B.C_JS_CONST(object); + if (dispatchName !== "Object" && dispatchName !== "") + return dispatchName; + $constructor = object.constructor; + if (typeof $constructor == "function") { + constructorName = $constructor.name; + if (typeof constructorName == "string" && constructorName !== "Object" && constructorName !== "") + return constructorName; + } + } + return A._rtiToString(A.instanceType(object), null); + }, + Primitives_stringFromNativeUint8List(charCodes, start, end) { + var i, result, i0, chunkEnd; + if (end <= 500 && start === 0 && end === charCodes.length) + return String.fromCharCode.apply(null, charCodes); + for (i = start, result = ""; i < end; i = i0) { + i0 = i + 500; + chunkEnd = i0 < end ? i0 : end; + result += String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd)); + } + return result; + }, + Primitives_lazyAsJsDate(receiver) { + if (receiver.date === void 0) + receiver.date = new Date(receiver._value); + return receiver.date; + }, + Primitives_getYear(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCFullYear() + 0; + return t1; + }, + Primitives_getMonth(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMonth() + 1; + return t1; + }, + Primitives_getDay(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCDate() + 0; + return t1; + }, + Primitives_getHours(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCHours() + 0; + return t1; + }, + Primitives_getMinutes(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMinutes() + 0; + return t1; + }, + Primitives_getSeconds(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCSeconds() + 0; + return t1; + }, + Primitives_getMilliseconds(receiver) { + var t1 = A.Primitives_lazyAsJsDate(receiver).getUTCMilliseconds() + 0; + return t1; + }, + Primitives_functionNoSuchMethod($function, positionalArguments, namedArguments) { + var $arguments, namedArgumentList, t1 = {}; + t1.argumentCount = 0; + $arguments = []; + namedArgumentList = []; + t1.argumentCount = positionalArguments.length; + B.JSArray_methods.addAll$1($arguments, positionalArguments); + t1.names = ""; + if (namedArguments != null && namedArguments._length !== 0) + namedArguments.forEach$1(0, new A.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments)); + return J.noSuchMethod$1$($function, new A.JSInvocationMirror(B.Symbol_call, 0, $arguments, namedArgumentList, 0)); + }, + Primitives_applyFunction($function, positionalArguments, namedArguments) { + var t1, argumentCount, jsStub; + if (Array.isArray(positionalArguments)) + t1 = namedArguments == null || namedArguments._length === 0; + else + t1 = false; + if (t1) { + argumentCount = positionalArguments.length; + if (argumentCount === 0) { + if (!!$function.call$0) + return $function.call$0(); + } else if (argumentCount === 1) { + if (!!$function.call$1) + return $function.call$1(positionalArguments[0]); + } else if (argumentCount === 2) { + if (!!$function.call$2) + return $function.call$2(positionalArguments[0], positionalArguments[1]); + } else if (argumentCount === 3) { + if (!!$function.call$3) + return $function.call$3(positionalArguments[0], positionalArguments[1], positionalArguments[2]); + } else if (argumentCount === 4) { + if (!!$function.call$4) + return $function.call$4(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3]); + } else if (argumentCount === 5) + if (!!$function.call$5) + return $function.call$5(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3], positionalArguments[4]); + jsStub = $function["call" + "$" + argumentCount]; + if (jsStub != null) + return jsStub.apply($function, positionalArguments); + } + return A.Primitives__generalApplyFunction($function, positionalArguments, namedArguments); + }, + Primitives__generalApplyFunction($function, positionalArguments, namedArguments) { + var defaultValuesClosure, t1, defaultValues, interceptor, jsFunction, maxArguments, missingDefaults, keys, _i, defaultValue, used, key, + $arguments = Array.isArray(positionalArguments) ? positionalArguments : A.List_List$of(positionalArguments, true, type$.dynamic), + argumentCount = $arguments.length, + requiredParameterCount = $function.$requiredArgCount; + if (argumentCount < requiredParameterCount) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + defaultValuesClosure = $function.$defaultValues; + t1 = defaultValuesClosure == null; + defaultValues = !t1 ? defaultValuesClosure() : null; + interceptor = J.getInterceptor$($function); + jsFunction = interceptor["call*"]; + if (typeof jsFunction == "string") + jsFunction = interceptor[jsFunction]; + if (t1) { + if (namedArguments != null && namedArguments._length !== 0) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + if (argumentCount === requiredParameterCount) + return jsFunction.apply($function, $arguments); + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + } + if (Array.isArray(defaultValues)) { + if (namedArguments != null && namedArguments._length !== 0) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + maxArguments = requiredParameterCount + defaultValues.length; + if (argumentCount > maxArguments) + return A.Primitives_functionNoSuchMethod($function, $arguments, null); + if (argumentCount < maxArguments) { + missingDefaults = defaultValues.slice(argumentCount - requiredParameterCount); + if ($arguments === positionalArguments) + $arguments = A.List_List$of($arguments, true, type$.dynamic); + B.JSArray_methods.addAll$1($arguments, missingDefaults); + } + return jsFunction.apply($function, $arguments); + } else { + if (argumentCount > requiredParameterCount) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + if ($arguments === positionalArguments) + $arguments = A.List_List$of($arguments, true, type$.dynamic); + keys = Object.keys(defaultValues); + if (namedArguments == null) + for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) { + defaultValue = defaultValues[A._asString(keys[_i])]; + if (B.C__Required === defaultValue) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + B.JSArray_methods.add$1($arguments, defaultValue); + } + else { + for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) { + key = A._asString(keys[_i]); + if (namedArguments.containsKey$1(0, key)) { + ++used; + B.JSArray_methods.add$1($arguments, namedArguments.$index(0, key)); + } else { + defaultValue = defaultValues[key]; + if (B.C__Required === defaultValue) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + B.JSArray_methods.add$1($arguments, defaultValue); + } + } + if (used !== namedArguments._length) + return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments); + } + return jsFunction.apply($function, $arguments); + } + }, + iae(argument) { + throw A.wrapException(A.argumentErrorValue(argument)); + }, + ioore(receiver, index) { + if (receiver == null) + J.get$length$asx(receiver); + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + }, + diagnoseIndexError(indexable, index) { + var $length, _s5_ = "index"; + if (!A._isInt(index)) + return new A.ArgumentError(true, index, _s5_, null); + $length = A._asInt(J.get$length$asx(indexable)); + if (index < 0 || index >= $length) + return A.IndexError$withLength(index, $length, indexable, _s5_); + return A.RangeError$value(index, _s5_); + }, + diagnoseRangeError(start, end, $length) { + if (start < 0 || start > $length) + return A.RangeError$range(start, 0, $length, "start", null); + if (end != null) + if (end < start || end > $length) + return A.RangeError$range(end, start, $length, "end", null); + return new A.ArgumentError(true, end, "end", null); + }, + argumentErrorValue(object) { + return new A.ArgumentError(true, object, null, null); + }, + wrapException(ex) { + var wrapper, t1; + if (ex == null) + ex = new A.NullThrownError(); + wrapper = new Error(); + wrapper.dartException = ex; + t1 = A.toStringWrapper; + if ("defineProperty" in Object) { + Object.defineProperty(wrapper, "message", {get: t1}); + wrapper.name = ""; + } else + wrapper.toString = t1; + return wrapper; + }, + toStringWrapper() { + return J.toString$0$(this.dartException); + }, + throwExpression(ex) { + throw A.wrapException(ex); + }, + throwConcurrentModificationError(collection) { + throw A.wrapException(A.ConcurrentModificationError$(collection)); + }, + TypeErrorDecoder_extractPattern(message) { + var match, $arguments, argumentsExpr, expr, method, receiver; + message = A.quoteStringForRegExp(message.replace(String({}), "$receiver$")); + match = message.match(/\\\$[a-zA-Z]+\\\$/g); + if (match == null) + match = A._setArrayType([], type$.JSArray_String); + $arguments = match.indexOf("\\$arguments\\$"); + argumentsExpr = match.indexOf("\\$argumentsExpr\\$"); + expr = match.indexOf("\\$expr\\$"); + method = match.indexOf("\\$method\\$"); + receiver = match.indexOf("\\$receiver\\$"); + return new A.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver); + }, + TypeErrorDecoder_provokeCallErrorOn(expression) { + return function($expr$) { + var $argumentsExpr$ = "$arguments$"; + try { + $expr$.$method$($argumentsExpr$); + } catch (e) { + return e.message; + } + }(expression); + }, + TypeErrorDecoder_provokePropertyErrorOn(expression) { + return function($expr$) { + try { + $expr$.$method$; + } catch (e) { + return e.message; + } + }(expression); + }, + JsNoSuchMethodError$(_message, match) { + var t1 = match == null, + t2 = t1 ? null : match.method; + return new A.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver); + }, + unwrapException(ex) { + var t1; + if (ex == null) + return new A.NullThrownFromJavaScriptException(ex); + if (ex instanceof A.ExceptionAndStackTrace) { + t1 = ex.dartException; + return A.saveStackTrace(ex, t1 == null ? type$.Object._as(t1) : t1); + } + if (typeof ex !== "object") + return ex; + if ("dartException" in ex) + return A.saveStackTrace(ex, ex.dartException); + return A._unwrapNonDartException(ex); + }, + saveStackTrace(ex, error) { + if (type$.Error._is(error)) + if (error.$thrownJsError == null) + error.$thrownJsError = ex; + return error; + }, + _unwrapNonDartException(ex) { + var message, number, ieErrorCode, t1, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, _null = null; + if (!("message" in ex)) + return ex; + message = ex.message; + if ("number" in ex && typeof ex.number == "number") { + number = ex.number; + ieErrorCode = number & 65535; + if ((B.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10) + switch (ieErrorCode) { + case 438: + return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", _null)); + case 445: + case 5007: + t1 = A.S(message); + return A.saveStackTrace(ex, new A.NullError(t1 + " (Error " + ieErrorCode + ")", _null)); + } + } + if (ex instanceof TypeError) { + nsme = $.$get$TypeErrorDecoder_noSuchMethodPattern(); + notClosure = $.$get$TypeErrorDecoder_notClosurePattern(); + nullCall = $.$get$TypeErrorDecoder_nullCallPattern(); + nullLiteralCall = $.$get$TypeErrorDecoder_nullLiteralCallPattern(); + undefCall = $.$get$TypeErrorDecoder_undefinedCallPattern(); + undefLiteralCall = $.$get$TypeErrorDecoder_undefinedLiteralCallPattern(); + nullProperty = $.$get$TypeErrorDecoder_nullPropertyPattern(); + $.$get$TypeErrorDecoder_nullLiteralPropertyPattern(); + undefProperty = $.$get$TypeErrorDecoder_undefinedPropertyPattern(); + undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern(); + match = nsme.matchTypeError$1(message); + if (match != null) + return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match)); + else { + match = notClosure.matchTypeError$1(message); + if (match != null) { + match.method = "call"; + return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A._asString(message), match)); + } else { + match = nullCall.matchTypeError$1(message); + if (match == null) { + match = nullLiteralCall.matchTypeError$1(message); + if (match == null) { + match = undefCall.matchTypeError$1(message); + if (match == null) { + match = undefLiteralCall.matchTypeError$1(message); + if (match == null) { + match = nullProperty.matchTypeError$1(message); + if (match == null) { + match = nullLiteralCall.matchTypeError$1(message); + if (match == null) { + match = undefProperty.matchTypeError$1(message); + if (match == null) { + match = undefLiteralProperty.matchTypeError$1(message); + t1 = match != null; + } else + t1 = true; + } else + t1 = true; + } else + t1 = true; + } else + t1 = true; + } else + t1 = true; + } else + t1 = true; + } else + t1 = true; + if (t1) { + A._asString(message); + return A.saveStackTrace(ex, new A.NullError(message, match == null ? _null : match.method)); + } + } + } + return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == "string" ? message : "")); + } + if (ex instanceof RangeError) { + if (typeof message == "string" && message.indexOf("call stack") !== -1) + return new A.StackOverflowError(); + message = function(ex) { + try { + return String(ex); + } catch (e) { + } + return null; + }(ex); + return A.saveStackTrace(ex, new A.ArgumentError(false, _null, _null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message)); + } + if (typeof InternalError == "function" && ex instanceof InternalError) + if (typeof message == "string" && message === "too much recursion") + return new A.StackOverflowError(); + return ex; + }, + getTraceFromException(exception) { + var trace; + if (exception instanceof A.ExceptionAndStackTrace) + return exception.stackTrace; + if (exception == null) + return new A._StackTrace(exception); + trace = exception.$cachedTrace; + if (trace != null) + return trace; + return exception.$cachedTrace = new A._StackTrace(exception); + }, + objectHashCode(object) { + if (object == null || typeof object != "object") + return J.get$hashCode$(object); + else + return A.Primitives_objectHashCode(object); + }, + fillLiteralMap(keyValuePairs, result) { + var index, index0, index1, + $length = keyValuePairs.length; + for (index = 0; index < $length; index = index1) { + index0 = index + 1; + index1 = index0 + 1; + result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]); + } + return result; + }, + invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) { + type$.Function._as(closure); + switch (A._asInt(numberOfArguments)) { + case 0: + return closure.call$0(); + case 1: + return closure.call$1(arg1); + case 2: + return closure.call$2(arg1, arg2); + case 3: + return closure.call$3(arg1, arg2, arg3); + case 4: + return closure.call$4(arg1, arg2, arg3, arg4); + } + throw A.wrapException(A.Exception_Exception("Unsupported number of arguments for wrapped closure")); + }, + convertDartClosureToJS(closure, arity) { + var $function; + if (closure == null) + return null; + $function = closure.$identity; + if (!!$function) + return $function; + $function = function(closure, arity, invoke) { + return function(a1, a2, a3, a4) { + return invoke(closure, arity, a1, a2, a3, a4); + }; + }(closure, arity, A.invokeClosure); + closure.$identity = $function; + return $function; + }, + Closure_fromTearOff(parameters) { + var $prototype, $constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName, + container = parameters.co, + isStatic = parameters.iS, + isIntercepted = parameters.iI, + needsDirectAccess = parameters.nDA, + applyTrampolineIndex = parameters.aI, + funsOrNames = parameters.fs, + callNames = parameters.cs, + $name = funsOrNames[0], + callName = callNames[0], + $function = container[$name], + t1 = parameters.fT; + t1.toString; + $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype); + $prototype.$initialize = $prototype.constructor; + if (isStatic) + $constructor = function static_tear_off() { + this.$initialize(); + }; + else + $constructor = function tear_off(a, b) { + this.$initialize(a, b); + }; + $prototype.constructor = $constructor; + $constructor.prototype = $prototype; + $prototype.$_name = $name; + $prototype.$_target = $function; + t2 = !isStatic; + if (t2) + trampoline = A.Closure_forwardCallTo($name, $function, isIntercepted, needsDirectAccess); + else { + $prototype.$static_name = $name; + trampoline = $function; + } + $prototype.$signature = A.Closure__computeSignatureFunctionNewRti(t1, isStatic, isIntercepted); + $prototype[callName] = trampoline; + for (applyTrampoline = trampoline, i = 1; i < funsOrNames.length; ++i) { + stub = funsOrNames[i]; + if (typeof stub == "string") { + stub0 = container[stub]; + stubName = stub; + stub = stub0; + } else + stubName = ""; + stubCallName = callNames[i]; + if (stubCallName != null) { + if (t2) + stub = A.Closure_forwardCallTo(stubName, stub, isIntercepted, needsDirectAccess); + $prototype[stubCallName] = stub; + } + if (i === applyTrampolineIndex) + applyTrampoline = stub; + } + $prototype["call*"] = applyTrampoline; + $prototype.$requiredArgCount = parameters.rC; + $prototype.$defaultValues = parameters.dV; + return $constructor; + }, + Closure__computeSignatureFunctionNewRti(functionType, isStatic, isIntercepted) { + if (typeof functionType == "number") + return functionType; + if (typeof functionType == "string") { + if (isStatic) + throw A.wrapException("Cannot compute signature for static tearoff."); + return function(recipe, evalOnReceiver) { + return function() { + return evalOnReceiver(this, recipe); + }; + }(functionType, A.BoundClosure_evalRecipe); + } + throw A.wrapException("Error in functionType of tearoff"); + }, + Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function) { + var getReceiver = A.BoundClosure_receiverOf; + switch (needsDirectAccess ? -1 : arity) { + case 0: + return function(entry, receiverOf) { + return function() { + return receiverOf(this)[entry](); + }; + }(stubName, getReceiver); + case 1: + return function(entry, receiverOf) { + return function(a) { + return receiverOf(this)[entry](a); + }; + }(stubName, getReceiver); + case 2: + return function(entry, receiverOf) { + return function(a, b) { + return receiverOf(this)[entry](a, b); + }; + }(stubName, getReceiver); + case 3: + return function(entry, receiverOf) { + return function(a, b, c) { + return receiverOf(this)[entry](a, b, c); + }; + }(stubName, getReceiver); + case 4: + return function(entry, receiverOf) { + return function(a, b, c, d) { + return receiverOf(this)[entry](a, b, c, d); + }; + }(stubName, getReceiver); + case 5: + return function(entry, receiverOf) { + return function(a, b, c, d, e) { + return receiverOf(this)[entry](a, b, c, d, e); + }; + }(stubName, getReceiver); + default: + return function(f, receiverOf) { + return function() { + return f.apply(receiverOf(this), arguments); + }; + }($function, getReceiver); + } + }, + Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) { + var arity, t1; + if (isIntercepted) + return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess); + arity = $function.length; + t1 = A.Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function); + return t1; + }, + Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) { + var getReceiver = A.BoundClosure_receiverOf, + getInterceptor = A.BoundClosure_interceptorOf; + switch (needsDirectAccess ? -1 : arity) { + case 0: + throw A.wrapException(new A.RuntimeError("Intercepted function with no arguments.")); + case 1: + return function(entry, interceptorOf, receiverOf) { + return function() { + return interceptorOf(this)[entry](receiverOf(this)); + }; + }(stubName, getInterceptor, getReceiver); + case 2: + return function(entry, interceptorOf, receiverOf) { + return function(a) { + return interceptorOf(this)[entry](receiverOf(this), a); + }; + }(stubName, getInterceptor, getReceiver); + case 3: + return function(entry, interceptorOf, receiverOf) { + return function(a, b) { + return interceptorOf(this)[entry](receiverOf(this), a, b); + }; + }(stubName, getInterceptor, getReceiver); + case 4: + return function(entry, interceptorOf, receiverOf) { + return function(a, b, c) { + return interceptorOf(this)[entry](receiverOf(this), a, b, c); + }; + }(stubName, getInterceptor, getReceiver); + case 5: + return function(entry, interceptorOf, receiverOf) { + return function(a, b, c, d) { + return interceptorOf(this)[entry](receiverOf(this), a, b, c, d); + }; + }(stubName, getInterceptor, getReceiver); + case 6: + return function(entry, interceptorOf, receiverOf) { + return function(a, b, c, d, e) { + return interceptorOf(this)[entry](receiverOf(this), a, b, c, d, e); + }; + }(stubName, getInterceptor, getReceiver); + default: + return function(f, interceptorOf, receiverOf) { + return function() { + var a = [receiverOf(this)]; + Array.prototype.push.apply(a, arguments); + return f.apply(interceptorOf(this), a); + }; + }($function, getInterceptor, getReceiver); + } + }, + Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess) { + var arity, t1; + if ($.BoundClosure__interceptorFieldNameCache == null) + $.BoundClosure__interceptorFieldNameCache = A.BoundClosure__computeFieldNamed("interceptor"); + if ($.BoundClosure__receiverFieldNameCache == null) + $.BoundClosure__receiverFieldNameCache = A.BoundClosure__computeFieldNamed("receiver"); + arity = $function.length; + t1 = A.Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function); + return t1; + }, + closureFromTearOff(parameters) { + return A.Closure_fromTearOff(parameters); + }, + BoundClosure_evalRecipe(closure, recipe) { + return A._Universe_evalInEnvironment(init.typeUniverse, A.instanceType(closure._receiver), recipe); + }, + BoundClosure_receiverOf(closure) { + return closure._receiver; + }, + BoundClosure_interceptorOf(closure) { + return closure._interceptor; + }, + BoundClosure__computeFieldNamed(fieldName) { + var t1, i, $name, + template = new A.BoundClosure("receiver", "interceptor"), + names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template), type$.nullable_Object); + for (t1 = names.length, i = 0; i < t1; ++i) { + $name = names[i]; + if (template[$name] === fieldName) + return $name; + } + throw A.wrapException(A.ArgumentError$("Field name " + fieldName + " not found.", null)); + }, + boolConversionCheck(value) { + if (value == null) + A.assertThrow("boolean expression must not be null"); + return value; + }, + assertThrow(message) { + throw A.wrapException(new A._AssertionError(message)); + }, + throwCyclicInit(staticName) { + throw A.wrapException(new A.CyclicInitializationError(staticName)); + }, + getIsolateAffinityTag($name) { + return init.getIsolateTag($name); + }, + defineProperty(obj, property, value) { + Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true}); + }, + lookupAndCacheInterceptor(obj) { + var interceptor, interceptorClass, altTag, mark, t1, + tag = A._asString($.getTagFunction.call$1(obj)), + record = $.dispatchRecordsForInstanceTags[tag]; + if (record != null) { + Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true}); + return record.i; + } + interceptor = $.interceptorsForUncacheableTags[tag]; + if (interceptor != null) + return interceptor; + interceptorClass = init.interceptorsByTag[tag]; + if (interceptorClass == null) { + altTag = A._asStringQ($.alternateTagFunction.call$2(obj, tag)); + if (altTag != null) { + record = $.dispatchRecordsForInstanceTags[altTag]; + if (record != null) { + Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true}); + return record.i; + } + interceptor = $.interceptorsForUncacheableTags[altTag]; + if (interceptor != null) + return interceptor; + interceptorClass = init.interceptorsByTag[altTag]; + tag = altTag; + } + } + if (interceptorClass == null) + return null; + interceptor = interceptorClass.prototype; + mark = tag[0]; + if (mark === "!") { + record = A.makeLeafDispatchRecord(interceptor); + $.dispatchRecordsForInstanceTags[tag] = record; + Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true}); + return record.i; + } + if (mark === "~") { + $.interceptorsForUncacheableTags[tag] = interceptor; + return interceptor; + } + if (mark === "-") { + t1 = A.makeLeafDispatchRecord(interceptor); + Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true}); + return t1.i; + } + if (mark === "+") + return A.patchInteriorProto(obj, interceptor); + if (mark === "*") + throw A.wrapException(A.UnimplementedError$(tag)); + if (init.leafTags[tag] === true) { + t1 = A.makeLeafDispatchRecord(interceptor); + Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true}); + return t1.i; + } else + return A.patchInteriorProto(obj, interceptor); + }, + patchInteriorProto(obj, interceptor) { + var proto = Object.getPrototypeOf(obj); + Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true}); + return interceptor; + }, + makeLeafDispatchRecord(interceptor) { + return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior); + }, + makeDefaultDispatchRecord(tag, interceptorClass, proto) { + var interceptor = interceptorClass.prototype; + if (init.leafTags[tag] === true) + return A.makeLeafDispatchRecord(interceptor); + else + return J.makeDispatchRecord(interceptor, proto, null, null); + }, + initNativeDispatch() { + if (true === $.initNativeDispatchFlag) + return; + $.initNativeDispatchFlag = true; + A.initNativeDispatchContinue(); + }, + initNativeDispatchContinue() { + var map, tags, fun, i, tag, proto, record, interceptorClass; + $.dispatchRecordsForInstanceTags = Object.create(null); + $.interceptorsForUncacheableTags = Object.create(null); + A.initHooks(); + map = init.interceptorsByTag; + tags = Object.getOwnPropertyNames(map); + if (typeof window != "undefined") { + window; + fun = function() { + }; + for (i = 0; i < tags.length; ++i) { + tag = tags[i]; + proto = $.prototypeForTagFunction.call$1(tag); + if (proto != null) { + record = A.makeDefaultDispatchRecord(tag, map[tag], proto); + if (record != null) { + Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true}); + fun.prototype = proto; + } + } + } + } + for (i = 0; i < tags.length; ++i) { + tag = tags[i]; + if (/^[A-Za-z_]/.test(tag)) { + interceptorClass = map[tag]; + map["!" + tag] = interceptorClass; + map["~" + tag] = interceptorClass; + map["-" + tag] = interceptorClass; + map["+" + tag] = interceptorClass; + map["*" + tag] = interceptorClass; + } + } + }, + initHooks() { + var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag, + hooks = B.C_JS_CONST0(); + hooks = A.applyHooksTransformer(B.C_JS_CONST1, A.applyHooksTransformer(B.C_JS_CONST2, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST4, A.applyHooksTransformer(B.C_JS_CONST5, A.applyHooksTransformer(B.C_JS_CONST6(B.C_JS_CONST), hooks))))))); + if (typeof dartNativeDispatchHooksTransformer != "undefined") { + transformers = dartNativeDispatchHooksTransformer; + if (typeof transformers == "function") + transformers = [transformers]; + if (transformers.constructor == Array) + for (i = 0; i < transformers.length; ++i) { + transformer = transformers[i]; + if (typeof transformer == "function") + hooks = transformer(hooks) || hooks; + } + } + getTag = hooks.getTag; + getUnknownTag = hooks.getUnknownTag; + prototypeForTag = hooks.prototypeForTag; + $.getTagFunction = new A.initHooks_closure(getTag); + $.alternateTagFunction = new A.initHooks_closure0(getUnknownTag); + $.prototypeForTagFunction = new A.initHooks_closure1(prototypeForTag); + }, + applyHooksTransformer(transformer, hooks) { + return transformer(hooks) || hooks; + }, + quoteStringForRegExp(string) { + if (/[[\]{}()*+?.\\^$|]/.test(string)) + return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&"); + return string; + }, + ConstantMapView: function ConstantMapView(t0, t1) { + this._collection$_map = t0; + this.$ti = t1; + }, + ConstantMap: function ConstantMap() { + }, + ConstantStringMap: function ConstantStringMap(t0, t1, t2, t3) { + var _ = this; + _._length = t0; + _._jsObject = t1; + _.__js_helper$_keys = t2; + _.$ti = t3; + }, + _ConstantMapKeyIterable: function _ConstantMapKeyIterable(t0, t1) { + this._map = t0; + this.$ti = t1; + }, + JSInvocationMirror: function JSInvocationMirror(t0, t1, t2, t3, t4) { + var _ = this; + _._memberName = t0; + _.__js_helper$_kind = t1; + _._arguments = t2; + _._namedArgumentNames = t3; + _._typeArgumentCount = t4; + }, + Primitives_functionNoSuchMethod_closure: function Primitives_functionNoSuchMethod_closure(t0, t1, t2) { + this._box_0 = t0; + this.namedArgumentList = t1; + this.$arguments = t2; + }, + TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) { + var _ = this; + _._pattern = t0; + _._arguments = t1; + _._argumentsExpr = t2; + _._expr = t3; + _._method = t4; + _._receiver = t5; + }, + NullError: function NullError(t0, t1) { + this.__js_helper$_message = t0; + this._method = t1; + }, + JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) { + this.__js_helper$_message = t0; + this._method = t1; + this._receiver = t2; + }, + UnknownJsTypeError: function UnknownJsTypeError(t0) { + this.__js_helper$_message = t0; + }, + NullThrownFromJavaScriptException: function NullThrownFromJavaScriptException(t0) { + this._irritant = t0; + }, + ExceptionAndStackTrace: function ExceptionAndStackTrace(t0, t1) { + this.dartException = t0; + this.stackTrace = t1; + }, + _StackTrace: function _StackTrace(t0) { + this._exception = t0; + this._trace = null; + }, + Closure: function Closure() { + }, + Closure0Args: function Closure0Args() { + }, + Closure2Args: function Closure2Args() { + }, + TearOffClosure: function TearOffClosure() { + }, + StaticClosure: function StaticClosure() { + }, + BoundClosure: function BoundClosure(t0, t1) { + this._receiver = t0; + this._interceptor = t1; + }, + RuntimeError: function RuntimeError(t0) { + this.message = t0; + }, + _AssertionError: function _AssertionError(t0) { + this.message = t0; + }, + _Required: function _Required() { + }, + JsLinkedHashMap: function JsLinkedHashMap(t0) { + var _ = this; + _._length = 0; + _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null; + _._modifications = 0; + _.$ti = t0; + }, + LinkedHashMapCell: function LinkedHashMapCell(t0, t1) { + this.hashMapCellKey = t0; + this.hashMapCellValue = t1; + this._next = null; + }, + LinkedHashMapKeyIterable: function LinkedHashMapKeyIterable(t0, t1) { + this._map = t0; + this.$ti = t1; + }, + LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1, t2) { + var _ = this; + _._map = t0; + _._modifications = t1; + _.__js_helper$_current = _._cell = null; + _.$ti = t2; + }, + initHooks_closure: function initHooks_closure(t0) { + this.getTag = t0; + }, + initHooks_closure0: function initHooks_closure0(t0) { + this.getUnknownTag = t0; + }, + initHooks_closure1: function initHooks_closure1(t0) { + this.prototypeForTag = t0; + }, + _ensureNativeList(list) { + var t1, result, i; + if (type$.JSIndexable_dynamic._is(list)) + return list; + t1 = J.getInterceptor$asx(list); + result = A.List_List$filled(t1.get$length(list), null, false, type$.dynamic); + for (i = 0; i < t1.get$length(list); ++i) + B.JSArray_methods.$indexSet(result, i, t1.$index(list, i)); + return result; + }, + NativeByteData_NativeByteData($length) { + return new DataView(new ArrayBuffer($length)); + }, + NativeUint8List_NativeUint8List($length) { + return new Uint8Array($length); + }, + NativeUint8List_NativeUint8List$fromList(elements) { + return new Uint8Array(A._ensureNativeList(elements)); + }, + NativeUint8List_NativeUint8List$view(buffer, offsetInBytes, $length) { + return $length == null ? new Uint8Array(buffer, offsetInBytes) : new Uint8Array(buffer, offsetInBytes, $length); + }, + _checkValidIndex(index, list, $length) { + if (index >>> 0 !== index || index >= $length) + throw A.wrapException(A.diagnoseIndexError(list, index)); + }, + _checkValidRange(start, end, $length) { + var t1; + if (!(start >>> 0 !== start)) + if (end == null) + t1 = start > $length; + else + t1 = end >>> 0 !== end || start > end || end > $length; + else + t1 = true; + if (t1) + throw A.wrapException(A.diagnoseRangeError(start, end, $length)); + if (end == null) + return $length; + return end; + }, + NativeByteBuffer: function NativeByteBuffer() { + }, + NativeTypedData: function NativeTypedData() { + }, + NativeByteData: function NativeByteData() { + }, + NativeTypedArray: function NativeTypedArray() { + }, + NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() { + }, + NativeTypedArrayOfInt: function NativeTypedArrayOfInt() { + }, + NativeInt16List: function NativeInt16List() { + }, + NativeInt32List: function NativeInt32List() { + }, + NativeInt8List: function NativeInt8List() { + }, + NativeUint16List: function NativeUint16List() { + }, + NativeUint32List: function NativeUint32List() { + }, + NativeUint8ClampedList: function NativeUint8ClampedList() { + }, + NativeUint8List: function NativeUint8List() { + }, + _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin() { + }, + _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin() { + }, + _NativeTypedArrayOfInt_NativeTypedArray_ListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin() { + }, + _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() { + }, + Rti__getQuestionFromStar(universe, rti) { + var question = rti._precomputed1; + return question == null ? rti._precomputed1 = A._Universe__lookupQuestionRti(universe, rti._primary, true) : question; + }, + Rti__getFutureFromFutureOr(universe, rti) { + var future = rti._precomputed1; + return future == null ? rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]) : future; + }, + Rti__isUnionOfFunctionType(rti) { + var kind = rti._kind; + if (kind === 6 || kind === 7 || kind === 8) + return A.Rti__isUnionOfFunctionType(rti._primary); + return kind === 12 || kind === 13; + }, + Rti__getCanonicalRecipe(rti) { + return rti._canonicalRecipe; + }, + findType(recipe) { + return A._Universe_eval(init.typeUniverse, recipe, false); + }, + _substitute(universe, rti, typeArguments, depth) { + var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument, + kind = rti._kind; + switch (kind) { + case 5: + case 1: + case 2: + case 3: + case 4: + return rti; + case 6: + baseType = rti._primary; + substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth); + if (substitutedBaseType === baseType) + return rti; + return A._Universe__lookupStarRti(universe, substitutedBaseType, true); + case 7: + baseType = rti._primary; + substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth); + if (substitutedBaseType === baseType) + return rti; + return A._Universe__lookupQuestionRti(universe, substitutedBaseType, true); + case 8: + baseType = rti._primary; + substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth); + if (substitutedBaseType === baseType) + return rti; + return A._Universe__lookupFutureOrRti(universe, substitutedBaseType, true); + case 9: + interfaceTypeArguments = rti._rest; + substitutedInterfaceTypeArguments = A._substituteArray(universe, interfaceTypeArguments, typeArguments, depth); + if (substitutedInterfaceTypeArguments === interfaceTypeArguments) + return rti; + return A._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments); + case 10: + base = rti._primary; + substitutedBase = A._substitute(universe, base, typeArguments, depth); + $arguments = rti._rest; + substitutedArguments = A._substituteArray(universe, $arguments, typeArguments, depth); + if (substitutedBase === base && substitutedArguments === $arguments) + return rti; + return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments); + case 12: + returnType = rti._primary; + substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth); + functionParameters = rti._rest; + substitutedFunctionParameters = A._substituteFunctionParameters(universe, functionParameters, typeArguments, depth); + if (substitutedReturnType === returnType && substitutedFunctionParameters === functionParameters) + return rti; + return A._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters); + case 13: + bounds = rti._rest; + depth += bounds.length; + substitutedBounds = A._substituteArray(universe, bounds, typeArguments, depth); + base = rti._primary; + substitutedBase = A._substitute(universe, base, typeArguments, depth); + if (substitutedBounds === bounds && substitutedBase === base) + return rti; + return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true); + case 14: + index = rti._primary; + if (index < depth) + return rti; + argument = typeArguments[index - depth]; + if (argument == null) + return rti; + return argument; + default: + throw A.wrapException(A.AssertionError$("Attempted to substitute unexpected RTI kind " + kind)); + } + }, + _substituteArray(universe, rtiArray, typeArguments, depth) { + var changed, i, rti, substitutedRti, + $length = rtiArray.length, + result = A._Utils_newArrayOrEmpty($length); + for (changed = false, i = 0; i < $length; ++i) { + rti = rtiArray[i]; + substitutedRti = A._substitute(universe, rti, typeArguments, depth); + if (substitutedRti !== rti) + changed = true; + result[i] = substitutedRti; + } + return changed ? result : rtiArray; + }, + _substituteNamed(universe, namedArray, typeArguments, depth) { + var changed, i, t1, t2, rti, substitutedRti, + $length = namedArray.length, + result = A._Utils_newArrayOrEmpty($length); + for (changed = false, i = 0; i < $length; i += 3) { + t1 = namedArray[i]; + t2 = namedArray[i + 1]; + rti = namedArray[i + 2]; + substitutedRti = A._substitute(universe, rti, typeArguments, depth); + if (substitutedRti !== rti) + changed = true; + result.splice(i, 3, t1, t2, substitutedRti); + } + return changed ? result : namedArray; + }, + _substituteFunctionParameters(universe, functionParameters, typeArguments, depth) { + var result, + requiredPositional = functionParameters._requiredPositional, + substitutedRequiredPositional = A._substituteArray(universe, requiredPositional, typeArguments, depth), + optionalPositional = functionParameters._optionalPositional, + substitutedOptionalPositional = A._substituteArray(universe, optionalPositional, typeArguments, depth), + named = functionParameters._named, + substitutedNamed = A._substituteNamed(universe, named, typeArguments, depth); + if (substitutedRequiredPositional === requiredPositional && substitutedOptionalPositional === optionalPositional && substitutedNamed === named) + return functionParameters; + result = new A._FunctionParameters(); + result._requiredPositional = substitutedRequiredPositional; + result._optionalPositional = substitutedOptionalPositional; + result._named = substitutedNamed; + return result; + }, + _setArrayType(target, rti) { + target[init.arrayRti] = rti; + return target; + }, + closureFunctionType(closure) { + var t1, + signature = closure.$signature; + if (signature != null) { + if (typeof signature == "number") + return A.getTypeFromTypesTable(signature); + t1 = closure.$signature(); + return t1; + } + return null; + }, + instanceOrFunctionType(object, testRti) { + var rti; + if (A.Rti__isUnionOfFunctionType(testRti)) + if (object instanceof A.Closure) { + rti = A.closureFunctionType(object); + if (rti != null) + return rti; + } + return A.instanceType(object); + }, + instanceType(object) { + var rti; + if (object instanceof A.Object) { + rti = object.$ti; + return rti != null ? rti : A._instanceTypeFromConstructor(object); + } + if (Array.isArray(object)) + return A._arrayInstanceType(object); + return A._instanceTypeFromConstructor(J.getInterceptor$(object)); + }, + _arrayInstanceType(object) { + var rti = object[init.arrayRti], + defaultRti = type$.JSArray_dynamic; + if (rti == null) + return defaultRti; + if (rti.constructor !== defaultRti.constructor) + return defaultRti; + return rti; + }, + _instanceType(object) { + var rti = object.$ti; + return rti != null ? rti : A._instanceTypeFromConstructor(object); + }, + _instanceTypeFromConstructor(instance) { + var $constructor = instance.constructor, + probe = $constructor.$ccache; + if (probe != null) + return probe; + return A._instanceTypeFromConstructorMiss(instance, $constructor); + }, + _instanceTypeFromConstructorMiss(instance, $constructor) { + var effectiveConstructor = instance instanceof A.Closure ? instance.__proto__.__proto__.constructor : $constructor, + rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name); + $constructor.$ccache = rti; + return rti; + }, + getTypeFromTypesTable(index) { + var rti, + table = init.types, + type = table[index]; + if (typeof type == "string") { + rti = A._Universe_eval(init.typeUniverse, type, false); + table[index] = rti; + return rti; + } + return type; + }, + createRuntimeType(rti) { + var s, starErasedRecipe, starErasedRti, + type = rti._cachedRuntimeType; + if (type != null) + return type; + s = rti._canonicalRecipe; + starErasedRecipe = s.replace(/\*/g, ""); + if (starErasedRecipe === s) + return rti._cachedRuntimeType = new A._Type(rti); + starErasedRti = A._Universe_eval(init.typeUniverse, starErasedRecipe, true); + type = starErasedRti._cachedRuntimeType; + return rti._cachedRuntimeType = type == null ? starErasedRti._cachedRuntimeType = new A._Type(starErasedRti) : type; + }, + typeLiteral(recipe) { + return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false)); + }, + _installSpecializedIsTest(object) { + var t1, unstarred, isFn, $name, testRti = this; + if (testRti === type$.Object) + return A._finishIsFn(testRti, object, A._isObject); + if (!A.isStrongTopType(testRti)) + if (!(testRti === type$.legacy_Object)) + t1 = false; + else + t1 = true; + else + t1 = true; + if (t1) + return A._finishIsFn(testRti, object, A._isTop); + t1 = testRti._kind; + unstarred = t1 === 6 ? testRti._primary : testRti; + if (unstarred === type$.int) + isFn = A._isInt; + else if (unstarred === type$.double || unstarred === type$.num) + isFn = A._isNum; + else if (unstarred === type$.String) + isFn = A._isString; + else + isFn = unstarred === type$.bool ? A._isBool : null; + if (isFn != null) + return A._finishIsFn(testRti, object, isFn); + if (unstarred._kind === 9) { + $name = unstarred._primary; + if (unstarred._rest.every(A.isTopType)) { + testRti._specializedTestResource = "$is" + $name; + if ($name === "List") + return A._finishIsFn(testRti, object, A._isListTestViaProperty); + return A._finishIsFn(testRti, object, A._isTestViaProperty); + } + } else if (t1 === 7) + return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation); + return A._finishIsFn(testRti, object, A._generalIsTestImplementation); + }, + _finishIsFn(testRti, object, isFn) { + testRti._is = isFn; + return testRti._is(object); + }, + _installSpecializedAsCheck(object) { + var t1, testRti = this, + asFn = A._generalAsCheckImplementation; + if (!A.isStrongTopType(testRti)) + if (!(testRti === type$.legacy_Object)) + t1 = false; + else + t1 = true; + else + t1 = true; + if (t1) + asFn = A._asTop; + else if (testRti === type$.Object) + asFn = A._asObject; + else { + t1 = A.isNullable(testRti); + if (t1) + asFn = A._generalNullableAsCheckImplementation; + } + testRti._as = asFn; + return testRti._as(object); + }, + _nullIs(testRti) { + var t1, + kind = testRti._kind; + if (!A.isStrongTopType(testRti)) + if (!(testRti === type$.legacy_Object)) + if (!(testRti === type$.legacy_Never)) + if (kind !== 7) + if (!(kind === 6 && A._nullIs(testRti._primary))) + t1 = kind === 8 && A._nullIs(testRti._primary) || testRti === type$.Null || testRti === type$.JSNull; + else + t1 = true; + else + t1 = true; + else + t1 = true; + else + t1 = true; + else + t1 = true; + return t1; + }, + _generalIsTestImplementation(object) { + var testRti = this; + if (object == null) + return A._nullIs(testRti); + return A._isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), null, testRti, null); + }, + _generalNullableIsTestImplementation(object) { + if (object == null) + return true; + return this._primary._is(object); + }, + _isTestViaProperty(object) { + var tag, testRti = this; + if (object == null) + return A._nullIs(testRti); + tag = testRti._specializedTestResource; + if (object instanceof A.Object) + return !!object[tag]; + return !!J.getInterceptor$(object)[tag]; + }, + _isListTestViaProperty(object) { + var tag, testRti = this; + if (object == null) + return A._nullIs(testRti); + if (typeof object != "object") + return false; + if (Array.isArray(object)) + return true; + tag = testRti._specializedTestResource; + if (object instanceof A.Object) + return !!object[tag]; + return !!J.getInterceptor$(object)[tag]; + }, + _generalAsCheckImplementation(object) { + var t1, testRti = this; + if (object == null) { + t1 = A.isNullable(testRti); + if (t1) + return object; + } else if (testRti._is(object)) + return object; + A._failedAsCheck(object, testRti); + }, + _generalNullableAsCheckImplementation(object) { + var testRti = this; + if (object == null) + return object; + else if (testRti._is(object)) + return object; + A._failedAsCheck(object, testRti); + }, + _failedAsCheck(object, testRti) { + throw A.wrapException(A._TypeError$fromMessage(A._Error_compose(object, A.instanceOrFunctionType(object, testRti), A._rtiToString(testRti, null)))); + }, + _Error_compose(object, objectRti, checkedTypeDescription) { + var objectDescription = A.Error_safeToString(object); + return objectDescription + ": type '" + A._rtiToString(objectRti == null ? A.instanceType(object) : objectRti, null) + "' is not a subtype of type '" + checkedTypeDescription + "'"; + }, + _TypeError$fromMessage(message) { + return new A._TypeError("TypeError: " + message); + }, + _TypeError__TypeError$forType(object, type) { + return new A._TypeError("TypeError: " + A._Error_compose(object, null, type)); + }, + _isObject(object) { + return object != null; + }, + _asObject(object) { + if (object != null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "Object")); + }, + _isTop(object) { + return true; + }, + _asTop(object) { + return object; + }, + _isBool(object) { + return true === object || false === object; + }, + _asBool(object) { + if (true === object) + return true; + if (false === object) + return false; + throw A.wrapException(A._TypeError__TypeError$forType(object, "bool")); + }, + _asBoolS(object) { + if (true === object) + return true; + if (false === object) + return false; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "bool")); + }, + _asBoolQ(object) { + if (true === object) + return true; + if (false === object) + return false; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "bool?")); + }, + _asDouble(object) { + if (typeof object == "number") + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "double")); + }, + _asDoubleS(object) { + if (typeof object == "number") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "double")); + }, + _asDoubleQ(object) { + if (typeof object == "number") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "double?")); + }, + _isInt(object) { + return typeof object == "number" && Math.floor(object) === object; + }, + _asInt(object) { + if (typeof object == "number" && Math.floor(object) === object) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "int")); + }, + _asIntS(object) { + if (typeof object == "number" && Math.floor(object) === object) + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "int")); + }, + _asIntQ(object) { + if (typeof object == "number" && Math.floor(object) === object) + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "int?")); + }, + _isNum(object) { + return typeof object == "number"; + }, + _asNum(object) { + if (typeof object == "number") + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "num")); + }, + _asNumS(object) { + if (typeof object == "number") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "num")); + }, + _asNumQ(object) { + if (typeof object == "number") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "num?")); + }, + _isString(object) { + return typeof object == "string"; + }, + _asString(object) { + if (typeof object == "string") + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "String")); + }, + _asStringS(object) { + if (typeof object == "string") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "String")); + }, + _asStringQ(object) { + if (typeof object == "string") + return object; + if (object == null) + return object; + throw A.wrapException(A._TypeError__TypeError$forType(object, "String?")); + }, + _rtiArrayToString(array, genericContext) { + var s, sep, i; + for (s = "", sep = "", i = 0; i < array.length; ++i, sep = ", ") + s += sep + A._rtiToString(array[i], genericContext); + return s; + }, + _recordRtiToString(recordType, genericContext) { + var fieldCount, names, namesIndex, s, comma, i, + partialShape = recordType._primary, + fields = recordType._rest; + if ("" === partialShape) + return "(" + A._rtiArrayToString(fields, genericContext) + ")"; + fieldCount = fields.length; + names = partialShape.split(","); + namesIndex = names.length - fieldCount; + for (s = "(", comma = "", i = 0; i < fieldCount; ++i, comma = ", ") { + s += comma; + if (namesIndex === 0) + s += "{"; + s += A._rtiToString(fields[i], genericContext); + if (namesIndex >= 0) + s += " " + names[namesIndex]; + ++namesIndex; + } + return s + "})"; + }, + _functionRtiToString(functionType, genericContext, bounds) { + var boundsLength, outerContextLength, offset, i, t1, t2, typeParametersText, typeSep, t3, t4, boundRti, kind, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", "; + if (bounds != null) { + boundsLength = bounds.length; + if (genericContext == null) { + genericContext = A._setArrayType([], type$.JSArray_String); + outerContextLength = null; + } else + outerContextLength = genericContext.length; + offset = genericContext.length; + for (i = boundsLength; i > 0; --i) + B.JSArray_methods.add$1(genericContext, "T" + (offset + i)); + for (t1 = type$.nullable_Object, t2 = type$.legacy_Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) { + t3 = genericContext.length; + t4 = t3 - 1 - i; + if (!(t4 >= 0)) + return A.ioore(genericContext, t4); + typeParametersText = B.JSString_methods.$add(typeParametersText + typeSep, genericContext[t4]); + boundRti = bounds[i]; + kind = boundRti._kind; + if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1)) + if (!(boundRti === t2)) + t3 = false; + else + t3 = true; + else + t3 = true; + if (!t3) + typeParametersText += " extends " + A._rtiToString(boundRti, genericContext); + } + typeParametersText += ">"; + } else { + typeParametersText = ""; + outerContextLength = null; + } + t1 = functionType._primary; + parameters = functionType._rest; + requiredPositional = parameters._requiredPositional; + requiredPositionalLength = requiredPositional.length; + optionalPositional = parameters._optionalPositional; + optionalPositionalLength = optionalPositional.length; + named = parameters._named; + namedLength = named.length; + returnTypeText = A._rtiToString(t1, genericContext); + for (argumentsText = "", sep = "", i = 0; i < requiredPositionalLength; ++i, sep = _s2_) + argumentsText += sep + A._rtiToString(requiredPositional[i], genericContext); + if (optionalPositionalLength > 0) { + argumentsText += sep + "["; + for (sep = "", i = 0; i < optionalPositionalLength; ++i, sep = _s2_) + argumentsText += sep + A._rtiToString(optionalPositional[i], genericContext); + argumentsText += "]"; + } + if (namedLength > 0) { + argumentsText += sep + "{"; + for (sep = "", i = 0; i < namedLength; i += 3, sep = _s2_) { + argumentsText += sep; + if (named[i + 1]) + argumentsText += "required "; + argumentsText += A._rtiToString(named[i + 2], genericContext) + " " + named[i]; + } + argumentsText += "}"; + } + if (outerContextLength != null) { + genericContext.toString; + genericContext.length = outerContextLength; + } + return typeParametersText + "(" + argumentsText + ") => " + returnTypeText; + }, + _rtiToString(rti, genericContext) { + var s, questionArgument, argumentKind, $name, $arguments, t1, t2, + kind = rti._kind; + if (kind === 5) + return "erased"; + if (kind === 2) + return "dynamic"; + if (kind === 3) + return "void"; + if (kind === 1) + return "Never"; + if (kind === 4) + return "any"; + if (kind === 6) { + s = A._rtiToString(rti._primary, genericContext); + return s; + } + if (kind === 7) { + questionArgument = rti._primary; + s = A._rtiToString(questionArgument, genericContext); + argumentKind = questionArgument._kind; + return (argumentKind === 12 || argumentKind === 13 ? "(" + s + ")" : s) + "?"; + } + if (kind === 8) + return "FutureOr<" + A._rtiToString(rti._primary, genericContext) + ">"; + if (kind === 9) { + $name = A._unminifyOrTag(rti._primary); + $arguments = rti._rest; + return $arguments.length > 0 ? $name + ("<" + A._rtiArrayToString($arguments, genericContext) + ">") : $name; + } + if (kind === 11) + return A._recordRtiToString(rti, genericContext); + if (kind === 12) + return A._functionRtiToString(rti, genericContext, null); + if (kind === 13) + return A._functionRtiToString(rti._primary, genericContext, rti._rest); + if (kind === 14) { + t1 = rti._primary; + t2 = genericContext.length; + t1 = t2 - 1 - t1; + if (!(t1 >= 0 && t1 < t2)) + return A.ioore(genericContext, t1); + return genericContext[t1]; + } + return "?"; + }, + _unminifyOrTag(rawClassName) { + var preserved = init.mangledGlobalNames[rawClassName]; + if (preserved != null) + return preserved; + return rawClassName; + }, + _Universe_findRule(universe, targetType) { + var rule = universe.tR[targetType]; + for (; typeof rule == "string";) + rule = universe.tR[rule]; + return rule; + }, + _Universe_findErasedType(universe, cls) { + var $length, erased, $arguments, i, $interface, + t1 = universe.eT, + probe = t1[cls]; + if (probe == null) + return A._Universe_eval(universe, cls, false); + else if (typeof probe == "number") { + $length = probe; + erased = A._Universe__lookupTerminalRti(universe, 5, "#"); + $arguments = A._Utils_newArrayOrEmpty($length); + for (i = 0; i < $length; ++i) + $arguments[i] = erased; + $interface = A._Universe__lookupInterfaceRti(universe, cls, $arguments); + t1[cls] = $interface; + return $interface; + } else + return probe; + }, + _Universe_addRules(universe, rules) { + return A._Utils_objectAssign(universe.tR, rules); + }, + _Universe_addErasedTypes(universe, types) { + return A._Utils_objectAssign(universe.eT, types); + }, + _Universe_eval(universe, recipe, normalize) { + var rti, + t1 = universe.eC, + probe = t1.get(recipe); + if (probe != null) + return probe; + rti = A._Parser_parse(A._Parser_create(universe, null, recipe, normalize)); + t1.set(recipe, rti); + return rti; + }, + _Universe_evalInEnvironment(universe, environment, recipe) { + var probe, rti, + cache = environment._evalCache; + if (cache == null) + cache = environment._evalCache = new Map(); + probe = cache.get(recipe); + if (probe != null) + return probe; + rti = A._Parser_parse(A._Parser_create(universe, environment, recipe, true)); + cache.set(recipe, rti); + return rti; + }, + _Universe_bind(universe, environment, argumentsRti) { + var argumentsRecipe, probe, rti, + cache = environment._bindCache; + if (cache == null) + cache = environment._bindCache = new Map(); + argumentsRecipe = argumentsRti._canonicalRecipe; + probe = cache.get(argumentsRecipe); + if (probe != null) + return probe; + rti = A._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 10 ? argumentsRti._rest : [argumentsRti]); + cache.set(argumentsRecipe, rti); + return rti; + }, + _Universe__installTypeTests(universe, rti) { + rti._as = A._installSpecializedAsCheck; + rti._is = A._installSpecializedIsTest; + return rti; + }, + _Universe__lookupTerminalRti(universe, kind, key) { + var rti, t1, + probe = universe.eC.get(key); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = kind; + rti._canonicalRecipe = key; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(key, t1); + return t1; + }, + _Universe__lookupStarRti(universe, baseType, normalize) { + var t1, + key = baseType._canonicalRecipe + "*", + probe = universe.eC.get(key); + if (probe != null) + return probe; + t1 = A._Universe__createStarRti(universe, baseType, key, normalize); + universe.eC.set(key, t1); + return t1; + }, + _Universe__createStarRti(universe, baseType, key, normalize) { + var baseKind, t1, rti; + if (normalize) { + baseKind = baseType._kind; + if (!A.isStrongTopType(baseType)) + t1 = baseType === type$.Null || baseType === type$.JSNull || baseKind === 7 || baseKind === 6; + else + t1 = true; + if (t1) + return baseType; + } + rti = new A.Rti(null, null); + rti._kind = 6; + rti._primary = baseType; + rti._canonicalRecipe = key; + return A._Universe__installTypeTests(universe, rti); + }, + _Universe__lookupQuestionRti(universe, baseType, normalize) { + var t1, + key = baseType._canonicalRecipe + "?", + probe = universe.eC.get(key); + if (probe != null) + return probe; + t1 = A._Universe__createQuestionRti(universe, baseType, key, normalize); + universe.eC.set(key, t1); + return t1; + }, + _Universe__createQuestionRti(universe, baseType, key, normalize) { + var baseKind, t1, starArgument, rti; + if (normalize) { + baseKind = baseType._kind; + if (!A.isStrongTopType(baseType)) + if (!(baseType === type$.Null || baseType === type$.JSNull)) + if (baseKind !== 7) + t1 = baseKind === 8 && A.isNullable(baseType._primary); + else + t1 = true; + else + t1 = true; + else + t1 = true; + if (t1) + return baseType; + else if (baseKind === 1 || baseType === type$.legacy_Never) + return type$.Null; + else if (baseKind === 6) { + starArgument = baseType._primary; + if (starArgument._kind === 8 && A.isNullable(starArgument._primary)) + return starArgument; + else + return A.Rti__getQuestionFromStar(universe, baseType); + } + } + rti = new A.Rti(null, null); + rti._kind = 7; + rti._primary = baseType; + rti._canonicalRecipe = key; + return A._Universe__installTypeTests(universe, rti); + }, + _Universe__lookupFutureOrRti(universe, baseType, normalize) { + var t1, + key = baseType._canonicalRecipe + "/", + probe = universe.eC.get(key); + if (probe != null) + return probe; + t1 = A._Universe__createFutureOrRti(universe, baseType, key, normalize); + universe.eC.set(key, t1); + return t1; + }, + _Universe__createFutureOrRti(universe, baseType, key, normalize) { + var t1, t2, rti; + if (normalize) { + t1 = baseType._kind; + if (!A.isStrongTopType(baseType)) + if (!(baseType === type$.legacy_Object)) + t2 = false; + else + t2 = true; + else + t2 = true; + if (t2 || baseType === type$.Object) + return baseType; + else if (t1 === 1) + return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]); + else if (baseType === type$.Null || baseType === type$.JSNull) + return type$.nullable_Future_Null; + } + rti = new A.Rti(null, null); + rti._kind = 8; + rti._primary = baseType; + rti._canonicalRecipe = key; + return A._Universe__installTypeTests(universe, rti); + }, + _Universe__lookupGenericFunctionParameterRti(universe, index) { + var rti, t1, + key = "" + index + "^", + probe = universe.eC.get(key); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = 14; + rti._primary = index; + rti._canonicalRecipe = key; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(key, t1); + return t1; + }, + _Universe__canonicalRecipeJoin($arguments) { + var s, sep, i, + $length = $arguments.length; + for (s = "", sep = "", i = 0; i < $length; ++i, sep = ",") + s += sep + $arguments[i]._canonicalRecipe; + return s; + }, + _Universe__canonicalRecipeJoinNamed($arguments) { + var s, sep, i, t1, nameSep, + $length = $arguments.length; + for (s = "", sep = "", i = 0; i < $length; i += 3, sep = ",") { + t1 = $arguments[i]; + nameSep = $arguments[i + 1] ? "!" : ":"; + s += sep + t1 + nameSep + $arguments[i + 2]._canonicalRecipe; + } + return s; + }, + _Universe__lookupInterfaceRti(universe, $name, $arguments) { + var probe, rti, t1, + s = $name; + if ($arguments.length > 0) + s += "<" + A._Universe__canonicalRecipeJoin($arguments) + ">"; + probe = universe.eC.get(s); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = 9; + rti._primary = $name; + rti._rest = $arguments; + if ($arguments.length > 0) + rti._precomputed1 = $arguments[0]; + rti._canonicalRecipe = s; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(s, t1); + return t1; + }, + _Universe__lookupBindingRti(universe, base, $arguments) { + var newBase, newArguments, key, probe, rti, t1; + if (base._kind === 10) { + newBase = base._primary; + newArguments = base._rest.concat($arguments); + } else { + newArguments = $arguments; + newBase = base; + } + key = newBase._canonicalRecipe + (";<" + A._Universe__canonicalRecipeJoin(newArguments) + ">"); + probe = universe.eC.get(key); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = 10; + rti._primary = newBase; + rti._rest = newArguments; + rti._canonicalRecipe = key; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(key, t1); + return t1; + }, + _Universe__lookupRecordRti(universe, partialShapeTag, fields) { + var rti, t1, + key = "+" + (partialShapeTag + "(" + A._Universe__canonicalRecipeJoin(fields) + ")"), + probe = universe.eC.get(key); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = 11; + rti._primary = partialShapeTag; + rti._rest = fields; + rti._canonicalRecipe = key; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(key, t1); + return t1; + }, + _Universe__lookupFunctionRti(universe, returnType, parameters) { + var sep, key, probe, rti, t1, + s = returnType._canonicalRecipe, + requiredPositional = parameters._requiredPositional, + requiredPositionalLength = requiredPositional.length, + optionalPositional = parameters._optionalPositional, + optionalPositionalLength = optionalPositional.length, + named = parameters._named, + namedLength = named.length, + recipe = "(" + A._Universe__canonicalRecipeJoin(requiredPositional); + if (optionalPositionalLength > 0) { + sep = requiredPositionalLength > 0 ? "," : ""; + recipe += sep + "[" + A._Universe__canonicalRecipeJoin(optionalPositional) + "]"; + } + if (namedLength > 0) { + sep = requiredPositionalLength > 0 ? "," : ""; + recipe += sep + "{" + A._Universe__canonicalRecipeJoinNamed(named) + "}"; + } + key = s + (recipe + ")"); + probe = universe.eC.get(key); + if (probe != null) + return probe; + rti = new A.Rti(null, null); + rti._kind = 12; + rti._primary = returnType; + rti._rest = parameters; + rti._canonicalRecipe = key; + t1 = A._Universe__installTypeTests(universe, rti); + universe.eC.set(key, t1); + return t1; + }, + _Universe__lookupGenericFunctionRti(universe, baseFunctionType, bounds, normalize) { + var t1, + key = baseFunctionType._canonicalRecipe + ("<" + A._Universe__canonicalRecipeJoin(bounds) + ">"), + probe = universe.eC.get(key); + if (probe != null) + return probe; + t1 = A._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize); + universe.eC.set(key, t1); + return t1; + }, + _Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize) { + var $length, typeArguments, count, i, bound, substitutedBase, substitutedBounds, rti; + if (normalize) { + $length = bounds.length; + typeArguments = A._Utils_newArrayOrEmpty($length); + for (count = 0, i = 0; i < $length; ++i) { + bound = bounds[i]; + if (bound._kind === 1) { + typeArguments[i] = bound; + ++count; + } + } + if (count > 0) { + substitutedBase = A._substitute(universe, baseFunctionType, typeArguments, 0); + substitutedBounds = A._substituteArray(universe, bounds, typeArguments, 0); + return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds); + } + } + rti = new A.Rti(null, null); + rti._kind = 13; + rti._primary = baseFunctionType; + rti._rest = bounds; + rti._canonicalRecipe = key; + return A._Universe__installTypeTests(universe, rti); + }, + _Parser_create(universe, environment, recipe, normalize) { + return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize}; + }, + _Parser_parse(parser) { + var t2, i, ch, t3, array, head, base, end, item, + source = parser.r, + t1 = parser.s; + for (t2 = source.length, i = 0; i < t2;) { + ch = source.charCodeAt(i); + if (ch >= 48 && ch <= 57) + i = A._Parser_handleDigit(i + 1, ch, source, t1); + else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124) + i = A._Parser_handleIdentifier(parser, i, source, t1, false); + else if (ch === 46) + i = A._Parser_handleIdentifier(parser, i, source, t1, true); + else { + ++i; + switch (ch) { + case 44: + break; + case 58: + t1.push(false); + break; + case 33: + t1.push(true); + break; + case 59: + t1.push(A._Parser_toType(parser.u, parser.e, t1.pop())); + break; + case 94: + t1.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop())); + break; + case 35: + t1.push(A._Universe__lookupTerminalRti(parser.u, 5, "#")); + break; + case 64: + t1.push(A._Universe__lookupTerminalRti(parser.u, 2, "@")); + break; + case 126: + t1.push(A._Universe__lookupTerminalRti(parser.u, 3, "~")); + break; + case 60: + t1.push(parser.p); + parser.p = t1.length; + break; + case 62: + t3 = parser.u; + array = t1.splice(parser.p); + A._Parser_toTypes(parser.u, parser.e, array); + parser.p = t1.pop(); + head = t1.pop(); + if (typeof head == "string") + t1.push(A._Universe__lookupInterfaceRti(t3, head, array)); + else { + base = A._Parser_toType(t3, parser.e, head); + switch (base._kind) { + case 12: + t1.push(A._Universe__lookupGenericFunctionRti(t3, base, array, parser.n)); + break; + default: + t1.push(A._Universe__lookupBindingRti(t3, base, array)); + break; + } + } + break; + case 38: + A._Parser_handleExtendedOperations(parser, t1); + break; + case 42: + t3 = parser.u; + t1.push(A._Universe__lookupStarRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n)); + break; + case 63: + t3 = parser.u; + t1.push(A._Universe__lookupQuestionRti(t3, A._Parser_toType(t3, parser.e, t1.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)); + break; + case 40: + t1.push(-3); + t1.push(parser.p); + parser.p = t1.length; + break; + case 41: + A._Parser_handleArguments(parser, t1); + break; + case 91: + t1.push(parser.p); + parser.p = t1.length; + break; + case 93: + array = t1.splice(parser.p); + A._Parser_toTypes(parser.u, parser.e, array); + parser.p = t1.pop(); + t1.push(array); + t1.push(-1); + break; + case 123: + t1.push(parser.p); + parser.p = t1.length; + break; + case 125: + array = t1.splice(parser.p); + A._Parser_toTypesNamed(parser.u, parser.e, array); + parser.p = t1.pop(); + t1.push(array); + t1.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; + i = end + 1; + break; + default: + throw "Bad character " + ch; + } + } + } + item = t1.pop(); + return A._Parser_toType(parser.u, parser.e, item); + }, + _Parser_handleDigit(i, digit, source, stack) { + var t1, ch, + value = digit - 48; + for (t1 = source.length; i < t1; ++i) { + ch = source.charCodeAt(i); + if (!(ch >= 48 && ch <= 57)) + break; + value = value * 10 + (ch - 48); + } + stack.push(value); + return i; + }, + _Parser_handleIdentifier(parser, start, source, stack, hasPeriod) { + var t1, ch, t2, string, environment, recipe, + i = start + 1; + for (t1 = source.length; i < t1; ++i) { + ch = source.charCodeAt(i); + if (ch === 46) { + if (hasPeriod) + break; + hasPeriod = true; + } else { + if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124)) + t2 = ch >= 48 && ch <= 57; + else + t2 = true; + if (!t2) + break; + } + } + string = source.substring(start, i); + if (hasPeriod) { + t1 = parser.u; + environment = parser.e; + if (environment._kind === 10) + environment = environment._primary; + recipe = A._Universe_findRule(t1, environment._primary)[string]; + if (recipe == null) + A.throwExpression('No "' + string + '" in "' + A.Rti__getCanonicalRecipe(environment) + '"'); + stack.push(A._Universe_evalInEnvironment(t1, environment, recipe)); + } else + stack.push(string); + return i; + }, + _Parser_handleArguments(parser, stack) { + var optionalPositional, named, requiredPositional, returnType, parameters, _null = null, + t1 = parser.u, + head = stack.pop(); + if (typeof head == "number") + switch (head) { + case -1: + optionalPositional = stack.pop(); + named = _null; + break; + case -2: + named = stack.pop(); + optionalPositional = _null; + break; + default: + stack.push(head); + named = _null; + optionalPositional = named; + break; + } + else { + stack.push(head); + named = _null; + optionalPositional = named; + } + requiredPositional = A._Parser_collectArray(parser, stack); + head = stack.pop(); + switch (head) { + case -3: + head = stack.pop(); + if (optionalPositional == null) + optionalPositional = t1.sEA; + if (named == null) + named = t1.sEA; + returnType = A._Parser_toType(t1, parser.e, head); + parameters = new A._FunctionParameters(); + parameters._requiredPositional = requiredPositional; + parameters._optionalPositional = optionalPositional; + parameters._named = named; + stack.push(A._Universe__lookupFunctionRti(t1, returnType, parameters)); + return; + case -4: + stack.push(A._Universe__lookupRecordRti(t1, stack.pop(), requiredPositional)); + return; + default: + throw A.wrapException(A.AssertionError$("Unexpected state under `()`: " + A.S(head))); + } + }, + _Parser_handleExtendedOperations(parser, stack) { + var $top = stack.pop(); + if (0 === $top) { + stack.push(A._Universe__lookupTerminalRti(parser.u, 1, "0&")); + return; + } + if (1 === $top) { + stack.push(A._Universe__lookupTerminalRti(parser.u, 4, "1&")); + return; + } + throw A.wrapException(A.AssertionError$("Unexpected extended operation " + A.S($top))); + }, + _Parser_collectArray(parser, stack) { + var array = stack.splice(parser.p); + A._Parser_toTypes(parser.u, parser.e, array); + parser.p = stack.pop(); + return array; + }, + _Parser_toType(universe, environment, item) { + if (typeof item == "string") + return A._Universe__lookupInterfaceRti(universe, item, universe.sEA); + else if (typeof item == "number") { + environment.toString; + return A._Parser_indexToType(universe, environment, item); + } else + return item; + }, + _Parser_toTypes(universe, environment, items) { + var i, + $length = items.length; + for (i = 0; i < $length; ++i) + items[i] = A._Parser_toType(universe, environment, items[i]); + }, + _Parser_toTypesNamed(universe, environment, items) { + var i, + $length = items.length; + for (i = 2; i < $length; i += 3) + items[i] = A._Parser_toType(universe, environment, items[i]); + }, + _Parser_indexToType(universe, environment, index) { + var typeArguments, len, + kind = environment._kind; + if (kind === 10) { + if (index === 0) + return environment._primary; + typeArguments = environment._rest; + len = typeArguments.length; + if (index <= len) + return typeArguments[index - 1]; + index -= len; + environment = environment._primary; + kind = environment._kind; + } else if (index === 0) + return environment; + if (kind !== 9) + throw A.wrapException(A.AssertionError$("Indexed base must be an interface type")); + typeArguments = environment._rest; + if (index <= typeArguments.length) + return typeArguments[index - 1]; + throw A.wrapException(A.AssertionError$("Bad index " + index + " for " + environment.toString$0(0))); + }, + _isSubtype(universe, s, sEnv, t, tEnv) { + var t1, sKind, leftTypeVariable, tKind, sBounds, tBounds, sLength, i, sBound, tBound; + if (s === t) + return true; + if (!A.isStrongTopType(t)) + if (!(t === type$.legacy_Object)) + t1 = false; + else + t1 = true; + else + t1 = true; + if (t1) + return true; + sKind = s._kind; + if (sKind === 4) + return true; + if (A.isStrongTopType(s)) + return false; + if (s._kind !== 1) + t1 = false; + else + t1 = true; + if (t1) + return true; + leftTypeVariable = sKind === 14; + if (leftTypeVariable) + if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv)) + return true; + tKind = t._kind; + t1 = s === type$.Null || s === type$.JSNull; + if (t1) { + if (tKind === 8) + return A._isSubtype(universe, s, sEnv, t._primary, tEnv); + return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6; + } + if (t === type$.Object) { + if (sKind === 8) + return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + if (sKind === 6) + return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + return sKind !== 7; + } + if (sKind === 6) + return A._isSubtype(universe, s._primary, sEnv, t, tEnv); + if (tKind === 6) { + t1 = A.Rti__getQuestionFromStar(universe, t); + return A._isSubtype(universe, s, sEnv, t1, tEnv); + } + if (sKind === 8) { + if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv)) + return false; + return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv); + } + if (sKind === 7) { + t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv); + return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv); + } + if (tKind === 8) { + if (A._isSubtype(universe, s, sEnv, t._primary, tEnv)) + return true; + return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv); + } + if (tKind === 7) { + t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv); + return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv); + } + if (leftTypeVariable) + return false; + t1 = sKind !== 12; + if ((!t1 || sKind === 13) && t === type$.Function) + return true; + if (tKind === 13) { + if (s === type$.JavaScriptFunction) + return true; + if (sKind !== 13) + return false; + sBounds = s._rest; + tBounds = t._rest; + sLength = sBounds.length; + if (sLength !== tBounds.length) + return false; + sEnv = sEnv == null ? sBounds : sBounds.concat(sEnv); + tEnv = tEnv == null ? tBounds : tBounds.concat(tEnv); + for (i = 0; i < sLength; ++i) { + sBound = sBounds[i]; + tBound = tBounds[i]; + if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv)) + return false; + } + return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv); + } + if (tKind === 12) { + if (s === type$.JavaScriptFunction) + return true; + if (t1) + return false; + return A._isFunctionSubtype(universe, s, sEnv, t, tEnv); + } + if (sKind === 9) { + if (tKind !== 9) + return false; + return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv); + } + t1 = sKind === 11; + if (t1 && t === type$.Record) + return true; + if (t1 && tKind === 11) + return A._isRecordSubtype(universe, s, sEnv, t, tEnv); + return false; + }, + _isFunctionSubtype(universe, s, sEnv, t, tEnv) { + var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired; + if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv)) + return false; + sParameters = s._rest; + tParameters = t._rest; + sRequiredPositional = sParameters._requiredPositional; + tRequiredPositional = tParameters._requiredPositional; + sRequiredPositionalLength = sRequiredPositional.length; + tRequiredPositionalLength = tRequiredPositional.length; + if (sRequiredPositionalLength > tRequiredPositionalLength) + return false; + requiredPositionalDelta = tRequiredPositionalLength - sRequiredPositionalLength; + sOptionalPositional = sParameters._optionalPositional; + tOptionalPositional = tParameters._optionalPositional; + sOptionalPositionalLength = sOptionalPositional.length; + tOptionalPositionalLength = tOptionalPositional.length; + if (sRequiredPositionalLength + sOptionalPositionalLength < tRequiredPositionalLength + tOptionalPositionalLength) + return false; + for (i = 0; i < sRequiredPositionalLength; ++i) { + t1 = sRequiredPositional[i]; + if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv)) + return false; + } + for (i = 0; i < requiredPositionalDelta; ++i) { + t1 = sOptionalPositional[i]; + if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv)) + return false; + } + for (i = 0; i < tOptionalPositionalLength; ++i) { + t1 = sOptionalPositional[requiredPositionalDelta + i]; + if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv)) + return false; + } + sNamed = sParameters._named; + tNamed = tParameters._named; + sNamedLength = sNamed.length; + tNamedLength = tNamed.length; + for (sIndex = 0, tIndex = 0; tIndex < tNamedLength; tIndex += 3) { + tName = tNamed[tIndex]; + for (; true;) { + if (sIndex >= sNamedLength) + return false; + sName = sNamed[sIndex]; + sIndex += 3; + if (tName < sName) + return false; + sIsRequired = sNamed[sIndex - 2]; + if (sName < tName) { + if (sIsRequired) + return false; + continue; + } + t1 = tNamed[tIndex + 1]; + if (sIsRequired && !t1) + return false; + t1 = sNamed[sIndex - 1]; + if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv)) + return false; + break; + } + } + for (; sIndex < sNamedLength;) { + if (sNamed[sIndex + 1]) + return false; + sIndex += 3; + } + return true; + }, + _isInterfaceSubtype(universe, s, sEnv, t, tEnv) { + var rule, recipes, $length, supertypeArgs, i, t1, t2, + sName = s._primary, + tName = t._primary; + for (; sName !== tName;) { + rule = universe.tR[sName]; + if (rule == null) + return false; + if (typeof rule == "string") { + sName = rule; + continue; + } + recipes = rule[tName]; + if (recipes == null) + return false; + $length = recipes.length; + supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA; + for (i = 0; i < $length; ++i) + supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]); + return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv); + } + t1 = s._rest; + t2 = t._rest; + return A._areArgumentsSubtypes(universe, t1, null, sEnv, t2, tEnv); + }, + _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) { + var i, t1, t2, + $length = sArgs.length; + for (i = 0; i < $length; ++i) { + t1 = sArgs[i]; + t2 = tArgs[i]; + if (!A._isSubtype(universe, t1, sEnv, t2, tEnv)) + return false; + } + return true; + }, + _isRecordSubtype(universe, s, sEnv, t, tEnv) { + var i, + sFields = s._rest, + tFields = t._rest, + sCount = sFields.length; + if (sCount !== tFields.length) + return false; + if (s._primary !== t._primary) + return false; + for (i = 0; i < sCount; ++i) + if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv)) + return false; + return true; + }, + isNullable(t) { + var t1, + kind = t._kind; + if (!(t === type$.Null || t === type$.JSNull)) + if (!A.isStrongTopType(t)) + if (kind !== 7) + if (!(kind === 6 && A.isNullable(t._primary))) + t1 = kind === 8 && A.isNullable(t._primary); + else + t1 = true; + else + t1 = true; + else + t1 = true; + else + t1 = true; + return t1; + }, + isTopType(t) { + var t1; + if (!A.isStrongTopType(t)) + if (!(t === type$.legacy_Object)) + t1 = false; + else + t1 = true; + else + t1 = true; + return t1; + }, + isStrongTopType(t) { + var kind = t._kind; + return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object; + }, + _Utils_objectAssign(o, other) { + var i, key, + keys = Object.keys(other), + $length = keys.length; + for (i = 0; i < $length; ++i) { + key = keys[i]; + o[key] = other[key]; + } + }, + _Utils_newArrayOrEmpty($length) { + return $length > 0 ? new Array($length) : init.typeUniverse.sEA; + }, + Rti: function Rti(t0, t1) { + var _ = this; + _._as = t0; + _._is = t1; + _._cachedRuntimeType = _._specializedTestResource = _._precomputed1 = null; + _._kind = 0; + _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null; + }, + _FunctionParameters: function _FunctionParameters() { + this._named = this._optionalPositional = this._requiredPositional = null; + }, + _Type: function _Type(t0) { + this._rti = t0; + }, + _Error: function _Error() { + }, + _TypeError: function _TypeError(t0) { + this.__rti$_message = t0; + }, + _AsyncRun__initializeScheduleImmediate() { + var div, span, t1 = {}; + if (self.scheduleImmediate != null) + return A.async__AsyncRun__scheduleImmediateJsOverride$closure(); + if (self.MutationObserver != null && self.document != null) { + div = self.document.createElement("div"); + span = self.document.createElement("span"); + t1.storedCallback = null; + new self.MutationObserver(A.convertDartClosureToJS(new A._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true}); + return new A._AsyncRun__initializeScheduleImmediate_closure(t1, div, span); + } else if (self.setImmediate != null) + return A.async__AsyncRun__scheduleImmediateWithSetImmediate$closure(); + return A.async__AsyncRun__scheduleImmediateWithTimer$closure(); + }, + _AsyncRun__scheduleImmediateJsOverride(callback) { + self.scheduleImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateJsOverride_internalCallback(type$.void_Function._as(callback)), 0)); + }, + _AsyncRun__scheduleImmediateWithSetImmediate(callback) { + self.setImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(type$.void_Function._as(callback)), 0)); + }, + _AsyncRun__scheduleImmediateWithTimer(callback) { + type$.void_Function._as(callback); + A._TimerImpl$(0, callback); + }, + _TimerImpl$(milliseconds, callback) { + var t1 = new A._TimerImpl(); + t1._TimerImpl$2(milliseconds, callback); + return t1; + }, + _makeAsyncAwaitCompleter($T) { + return new A._AsyncAwaitCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncAwaitCompleter<0>")); + }, + _asyncStartSync(bodyFunction, completer) { + bodyFunction.call$2(0, null); + completer.isSync = true; + return completer._future; + }, + _asyncAwait(object, bodyFunction) { + A._awaitOnObject(object, bodyFunction); + }, + _asyncReturn(object, completer) { + completer.complete$1(0, object); + }, + _asyncRethrow(object, completer) { + completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object)); + }, + _awaitOnObject(object, bodyFunction) { + var t1, future, + thenCallback = new A._awaitOnObject_closure(bodyFunction), + errorCallback = new A._awaitOnObject_closure0(bodyFunction); + if (object instanceof A._Future) + object._thenAwait$1$2(thenCallback, errorCallback, type$.dynamic); + else { + t1 = type$.dynamic; + if (type$.Future_dynamic._is(object)) + object.then$1$2$onError(thenCallback, errorCallback, t1); + else { + future = new A._Future($.Zone__current, type$._Future_dynamic); + future._state = 8; + future._resultOrListeners = object; + future._thenAwait$1$2(thenCallback, errorCallback, t1); + } + } + }, + _wrapJsFunctionForAsync($function) { + var $protected = function(fn, ERROR) { + return function(errorCode, result) { + while (true) + try { + fn(errorCode, result); + break; + } catch (error) { + result = error; + errorCode = ERROR; + } + }; + }($function, 1); + return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic); + }, + AsyncError$(error, stackTrace) { + var t1 = A.checkNotNullable(error, "error", type$.Object); + return new A.AsyncError(t1, stackTrace == null ? A.AsyncError_defaultStackTrace(error) : stackTrace); + }, + AsyncError_defaultStackTrace(error) { + var stackTrace; + if (type$.Error._is(error)) { + stackTrace = error.get$stackTrace(); + if (stackTrace != null) + return stackTrace; + } + return B.C__StringStackTrace; + }, + _Future__chainCoreFuture(source, target) { + var t1, t2, listeners; + for (t1 = type$._Future_dynamic; t2 = source._state, (t2 & 4) !== 0;) + source = t1._as(source._resultOrListeners); + if ((t2 & 24) !== 0) { + listeners = target._removeListeners$0(); + target._cloneResult$1(source); + A._Future__propagateToListeners(target, listeners); + } else { + listeners = type$.nullable__FutureListener_dynamic_dynamic._as(target._resultOrListeners); + target._state = target._state & 1 | 4; + target._resultOrListeners = source; + source._prependListeners$1(listeners); + } + }, + _Future__propagateToListeners(source, listeners) { + var t2, t3, t4, _box_0, t5, t6, hasError, asyncError, nextListener, nextListener0, sourceResult, t7, zone, oldZone, result, current, _box_1 = {}, + t1 = _box_1.source = source; + for (t2 = type$.AsyncError, t3 = type$.nullable__FutureListener_dynamic_dynamic, t4 = type$.Future_dynamic; true;) { + _box_0 = {}; + t5 = t1._state; + t6 = (t5 & 16) === 0; + hasError = !t6; + if (listeners == null) { + if (hasError && (t5 & 1) === 0) { + asyncError = t2._as(t1._resultOrListeners); + A._rootHandleError(asyncError.error, asyncError.stackTrace); + } + return; + } + _box_0.listener = listeners; + nextListener = listeners._nextListener; + for (t1 = listeners; nextListener != null; t1 = nextListener, nextListener = nextListener0) { + t1._nextListener = null; + A._Future__propagateToListeners(_box_1.source, t1); + _box_0.listener = nextListener; + nextListener0 = nextListener._nextListener; + } + t5 = _box_1.source; + sourceResult = t5._resultOrListeners; + _box_0.listenerHasError = hasError; + _box_0.listenerValueOrError = sourceResult; + if (t6) { + t7 = t1.state; + t7 = (t7 & 1) !== 0 || (t7 & 15) === 8; + } else + t7 = true; + if (t7) { + zone = t1.result._zone; + if (hasError) { + t5 = t5._zone === zone; + t5 = !(t5 || t5); + } else + t5 = false; + if (t5) { + t2._as(sourceResult); + A._rootHandleError(sourceResult.error, sourceResult.stackTrace); + return; + } + oldZone = $.Zone__current; + if (oldZone !== zone) + $.Zone__current = zone; + else + oldZone = null; + t1 = t1.state; + if ((t1 & 15) === 8) + new A._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call$0(); + else if (t6) { + if ((t1 & 1) !== 0) + new A._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call$0(); + } else if ((t1 & 2) !== 0) + new A._Future__propagateToListeners_handleError(_box_1, _box_0).call$0(); + if (oldZone != null) + $.Zone__current = oldZone; + t1 = _box_0.listenerValueOrError; + if (t4._is(t1)) { + t5 = _box_0.listener.$ti; + t5 = t5._eval$1("Future<2>")._is(t1) || !t5._rest[1]._is(t1); + } else + t5 = false; + if (t5) { + t4._as(t1); + result = _box_0.listener.result; + if ((t1._state & 24) !== 0) { + current = t3._as(result._resultOrListeners); + result._resultOrListeners = null; + listeners = result._reverseListeners$1(current); + result._state = t1._state & 30 | result._state & 1; + result._resultOrListeners = t1._resultOrListeners; + _box_1.source = t1; + continue; + } else + A._Future__chainCoreFuture(t1, result); + return; + } + } + result = _box_0.listener.result; + current = t3._as(result._resultOrListeners); + result._resultOrListeners = null; + listeners = result._reverseListeners$1(current); + t1 = _box_0.listenerHasError; + t5 = _box_0.listenerValueOrError; + if (!t1) { + result.$ti._precomputed1._as(t5); + result._state = 8; + result._resultOrListeners = t5; + } else { + t2._as(t5); + result._state = result._state & 1 | 16; + result._resultOrListeners = t5; + } + _box_1.source = result; + t1 = result; + } + }, + _registerErrorHandler(errorHandler, zone) { + var t1; + if (type$.dynamic_Function_Object_StackTrace._is(errorHandler)) + return zone.registerBinaryCallback$3$1(errorHandler, type$.dynamic, type$.Object, type$.StackTrace); + t1 = type$.dynamic_Function_Object; + if (t1._is(errorHandler)) + return t1._as(errorHandler); + throw A.wrapException(A.ArgumentError$value(errorHandler, "onError", string$.Error_)); + }, + _microtaskLoop() { + var entry, next; + for (entry = $._nextCallback; entry != null; entry = $._nextCallback) { + $._lastPriorityCallback = null; + next = entry.next; + $._nextCallback = next; + if (next == null) + $._lastCallback = null; + entry.callback.call$0(); + } + }, + _startMicrotaskLoop() { + $._isInCallbackLoop = true; + try { + A._microtaskLoop(); + } finally { + $._lastPriorityCallback = null; + $._isInCallbackLoop = false; + if ($._nextCallback != null) + $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure()); + } + }, + _scheduleAsyncCallback(callback) { + var newEntry = new A._AsyncCallbackEntry(callback), + lastCallback = $._lastCallback; + if (lastCallback == null) { + $._nextCallback = $._lastCallback = newEntry; + if (!$._isInCallbackLoop) + $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure()); + } else + $._lastCallback = lastCallback.next = newEntry; + }, + _schedulePriorityAsyncCallback(callback) { + var entry, lastPriorityCallback, next, + t1 = $._nextCallback; + if (t1 == null) { + A._scheduleAsyncCallback(callback); + $._lastPriorityCallback = $._lastCallback; + return; + } + entry = new A._AsyncCallbackEntry(callback); + lastPriorityCallback = $._lastPriorityCallback; + if (lastPriorityCallback == null) { + entry.next = t1; + $._nextCallback = $._lastPriorityCallback = entry; + } else { + next = lastPriorityCallback.next; + entry.next = next; + $._lastPriorityCallback = lastPriorityCallback.next = entry; + if (next == null) + $._lastCallback = entry; + } + }, + scheduleMicrotask(callback) { + var t1, _null = null, + currentZone = $.Zone__current; + if (B.C__RootZone === currentZone) { + A._rootScheduleMicrotask(_null, _null, B.C__RootZone, callback); + return; + } + t1 = false; + if (t1) { + A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(callback)); + return; + } + A._rootScheduleMicrotask(_null, _null, currentZone, type$.void_Function._as(currentZone.bindCallbackGuarded$1(callback))); + }, + StreamIterator_StreamIterator(stream, $T) { + A.checkNotNullable(stream, "stream", type$.Object); + return new A._StreamIterator($T._eval$1("_StreamIterator<0>")); + }, + _rootHandleError(error, stackTrace) { + A._schedulePriorityAsyncCallback(new A._rootHandleError_closure(error, stackTrace)); + }, + _rootRun($self, $parent, zone, f, $R) { + var old, + t1 = $.Zone__current; + if (t1 === zone) + return f.call$0(); + $.Zone__current = zone; + old = t1; + try { + t1 = f.call$0(); + return t1; + } finally { + $.Zone__current = old; + } + }, + _rootRunUnary($self, $parent, zone, f, arg, $R, $T) { + var old, + t1 = $.Zone__current; + if (t1 === zone) + return f.call$1(arg); + $.Zone__current = zone; + old = t1; + try { + t1 = f.call$1(arg); + return t1; + } finally { + $.Zone__current = old; + } + }, + _rootRunBinary($self, $parent, zone, f, arg1, arg2, $R, T1, T2) { + var old, + t1 = $.Zone__current; + if (t1 === zone) + return f.call$2(arg1, arg2); + $.Zone__current = zone; + old = t1; + try { + t1 = f.call$2(arg1, arg2); + return t1; + } finally { + $.Zone__current = old; + } + }, + _rootScheduleMicrotask($self, $parent, zone, f) { + type$.void_Function._as(f); + if (B.C__RootZone !== zone) + f = zone.bindCallbackGuarded$1(f); + A._scheduleAsyncCallback(f); + }, + _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) { + this._box_0 = t0; + }, + _AsyncRun__initializeScheduleImmediate_closure: function _AsyncRun__initializeScheduleImmediate_closure(t0, t1, t2) { + this._box_0 = t0; + this.div = t1; + this.span = t2; + }, + _AsyncRun__scheduleImmediateJsOverride_internalCallback: function _AsyncRun__scheduleImmediateJsOverride_internalCallback(t0) { + this.callback = t0; + }, + _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback: function _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(t0) { + this.callback = t0; + }, + _TimerImpl: function _TimerImpl() { + }, + _TimerImpl_internalCallback: function _TimerImpl_internalCallback(t0, t1) { + this.$this = t0; + this.callback = t1; + }, + _AsyncAwaitCompleter: function _AsyncAwaitCompleter(t0, t1) { + this._future = t0; + this.isSync = false; + this.$ti = t1; + }, + _awaitOnObject_closure: function _awaitOnObject_closure(t0) { + this.bodyFunction = t0; + }, + _awaitOnObject_closure0: function _awaitOnObject_closure0(t0) { + this.bodyFunction = t0; + }, + _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) { + this.$protected = t0; + }, + AsyncError: function AsyncError(t0, t1) { + this.error = t0; + this.stackTrace = t1; + }, + _Completer: function _Completer() { + }, + _AsyncCompleter: function _AsyncCompleter(t0, t1) { + this.future = t0; + this.$ti = t1; + }, + _FutureListener: function _FutureListener(t0, t1, t2, t3, t4) { + var _ = this; + _._nextListener = null; + _.result = t0; + _.state = t1; + _.callback = t2; + _.errorCallback = t3; + _.$ti = t4; + }, + _Future: function _Future(t0, t1) { + var _ = this; + _._state = 0; + _._zone = t0; + _._resultOrListeners = null; + _.$ti = t1; + }, + _Future__addListener_closure: function _Future__addListener_closure(t0, t1) { + this.$this = t0; + this.listener = t1; + }, + _Future__prependListeners_closure: function _Future__prependListeners_closure(t0, t1) { + this._box_0 = t0; + this.$this = t1; + }, + _Future__chainForeignFuture_closure: function _Future__chainForeignFuture_closure(t0) { + this.$this = t0; + }, + _Future__chainForeignFuture_closure0: function _Future__chainForeignFuture_closure0(t0) { + this.$this = t0; + }, + _Future__chainForeignFuture_closure1: function _Future__chainForeignFuture_closure1(t0, t1, t2) { + this.$this = t0; + this.e = t1; + this.s = t2; + }, + _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) { + this.$this = t0; + this.value = t1; + }, + _Future__chainFuture_closure: function _Future__chainFuture_closure(t0, t1) { + this.$this = t0; + this.value = t1; + }, + _Future__asyncCompleteError_closure: function _Future__asyncCompleteError_closure(t0, t1, t2) { + this.$this = t0; + this.error = t1; + this.stackTrace = t2; + }, + _Future__propagateToListeners_handleWhenCompleteCallback: function _Future__propagateToListeners_handleWhenCompleteCallback(t0, t1, t2) { + this._box_0 = t0; + this._box_1 = t1; + this.hasError = t2; + }, + _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0) { + this.originalSource = t0; + }, + _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1) { + this._box_0 = t0; + this.sourceResult = t1; + }, + _Future__propagateToListeners_handleError: function _Future__propagateToListeners_handleError(t0, t1) { + this._box_1 = t0; + this._box_0 = t1; + }, + _AsyncCallbackEntry: function _AsyncCallbackEntry(t0) { + this.callback = t0; + this.next = null; + }, + Stream: function Stream() { + }, + Stream_length_closure: function Stream_length_closure(t0, t1) { + this._box_0 = t0; + this.$this = t1; + }, + Stream_length_closure0: function Stream_length_closure0(t0, t1) { + this._box_0 = t0; + this.future = t1; + }, + StreamSubscription: function StreamSubscription() { + }, + StreamTransformerBase: function StreamTransformerBase() { + }, + _StreamIterator: function _StreamIterator(t0) { + this.$ti = t0; + }, + _Zone: function _Zone() { + }, + _rootHandleError_closure: function _rootHandleError_closure(t0, t1) { + this.error = t0; + this.stackTrace = t1; + }, + _RootZone: function _RootZone() { + }, + _RootZone_bindCallbackGuarded_closure: function _RootZone_bindCallbackGuarded_closure(t0, t1) { + this.$this = t0; + this.f = t1; + }, + _RootZone_bindUnaryCallbackGuarded_closure: function _RootZone_bindUnaryCallbackGuarded_closure(t0, t1, t2) { + this.$this = t0; + this.f = t1; + this.T = t2; + }, + _HashMap__getTableEntry(table, key) { + var entry = table[key]; + return entry === table ? null : entry; + }, + _HashMap__setTableEntry(table, key, value) { + if (value == null) + table[key] = table; + else + table[key] = value; + }, + _HashMap__newHashTable() { + var table = Object.create(null); + A._HashMap__setTableEntry(table, "", table); + delete table[""]; + return table; + }, + LinkedHashMap_LinkedHashMap$_literal(keyValuePairs, $K, $V) { + return $K._eval$1("@<0>")._bind$1($V)._eval$1("LinkedHashMap<1,2>")._as(A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>")))); + }, + LinkedHashMap_LinkedHashMap$_empty($K, $V) { + return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>")); + }, + IterableBase_iterableToShortString(iterable, leftDelimiter, rightDelimiter) { + var parts, t1; + if (A._isToStringVisiting(iterable)) { + if (leftDelimiter === "(" && rightDelimiter === ")") + return "(...)"; + return leftDelimiter + "..." + rightDelimiter; + } + parts = A._setArrayType([], type$.JSArray_String); + B.JSArray_methods.add$1($._toStringVisiting, iterable); + try { + A._iterablePartsToStrings(iterable, parts); + } finally { + if (0 >= $._toStringVisiting.length) + return A.ioore($._toStringVisiting, -1); + $._toStringVisiting.pop(); + } + t1 = A.StringBuffer__writeAll(leftDelimiter, type$.Iterable_dynamic._as(parts), ", ") + rightDelimiter; + return t1.charCodeAt(0) == 0 ? t1 : t1; + }, + IterableBase_iterableToFullString(iterable, leftDelimiter, rightDelimiter) { + var buffer, t1; + if (A._isToStringVisiting(iterable)) + return leftDelimiter + "..." + rightDelimiter; + buffer = new A.StringBuffer(leftDelimiter); + B.JSArray_methods.add$1($._toStringVisiting, iterable); + try { + t1 = buffer; + t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", "); + } finally { + if (0 >= $._toStringVisiting.length) + return A.ioore($._toStringVisiting, -1); + $._toStringVisiting.pop(); + } + buffer._contents += rightDelimiter; + t1 = buffer._contents; + return t1.charCodeAt(0) == 0 ? t1 : t1; + }, + _isToStringVisiting(o) { + var t1, i; + for (t1 = $._toStringVisiting.length, i = 0; i < t1; ++i) + if (o === $._toStringVisiting[i]) + return true; + return false; + }, + _iterablePartsToStrings(iterable, parts) { + var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision, + it = iterable.get$iterator(iterable), + $length = 0, count = 0; + while (true) { + if (!($length < 80 || count < 3)) + break; + if (!it.moveNext$0()) + return; + next = A.S(it.get$current(it)); + B.JSArray_methods.add$1(parts, next); + $length += next.length + 2; + ++count; + } + if (!it.moveNext$0()) { + if (count <= 5) + return; + if (0 >= parts.length) + return A.ioore(parts, -1); + ultimateString = parts.pop(); + if (0 >= parts.length) + return A.ioore(parts, -1); + penultimateString = parts.pop(); + } else { + penultimate = it.get$current(it); + ++count; + if (!it.moveNext$0()) { + if (count <= 4) { + B.JSArray_methods.add$1(parts, A.S(penultimate)); + return; + } + ultimateString = A.S(penultimate); + if (0 >= parts.length) + return A.ioore(parts, -1); + penultimateString = parts.pop(); + $length += ultimateString.length + 2; + } else { + ultimate = it.get$current(it); + ++count; + for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) { + ultimate0 = it.get$current(it); + ++count; + if (count > 100) { + while (true) { + if (!($length > 75 && count > 3)) + break; + if (0 >= parts.length) + return A.ioore(parts, -1); + $length -= parts.pop().length + 2; + --count; + } + B.JSArray_methods.add$1(parts, "..."); + return; + } + } + penultimateString = A.S(penultimate); + ultimateString = A.S(ultimate); + $length += ultimateString.length + penultimateString.length + 4; + } + } + if (count > parts.length + 2) { + $length += 5; + elision = "..."; + } else + elision = null; + while (true) { + if (!($length > 80 && parts.length > 3)) + break; + if (0 >= parts.length) + return A.ioore(parts, -1); + $length -= parts.pop().length + 2; + if (elision == null) { + $length += 5; + elision = "..."; + } + } + if (elision != null) + B.JSArray_methods.add$1(parts, elision); + B.JSArray_methods.add$1(parts, penultimateString); + B.JSArray_methods.add$1(parts, ultimateString); + }, + MapBase_mapToString(m) { + var result, t1 = {}; + if (A._isToStringVisiting(m)) + return "{...}"; + result = new A.StringBuffer(""); + try { + B.JSArray_methods.add$1($._toStringVisiting, m); + result._contents += "{"; + t1.first = true; + J.forEach$1$x(m, new A.MapBase_mapToString_closure(t1, result)); + result._contents += "}"; + } finally { + if (0 >= $._toStringVisiting.length) + return A.ioore($._toStringVisiting, -1); + $._toStringVisiting.pop(); + } + t1 = result._contents; + return t1.charCodeAt(0) == 0 ? t1 : t1; + }, + _HashMap: function _HashMap() { + }, + _IdentityHashMap: function _IdentityHashMap(t0) { + var _ = this; + _._collection$_length = 0; + _._keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null; + _.$ti = t0; + }, + _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) { + this._collection$_map = t0; + this.$ti = t1; + }, + _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1, t2) { + var _ = this; + _._collection$_map = t0; + _._keys = t1; + _._offset = 0; + _._collection$_current = null; + _.$ti = t2; + }, + ListBase: function ListBase() { + }, + ListMixin: function ListMixin() { + }, + MapBase: function MapBase() { + }, + MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) { + this._box_0 = t0; + this.result = t1; + }, + MapMixin: function MapMixin() { + }, + _UnmodifiableMapMixin: function _UnmodifiableMapMixin() { + }, + MapView: function MapView() { + }, + UnmodifiableMapView: function UnmodifiableMapView() { + }, + _ListBase_Object_ListMixin: function _ListBase_Object_ListMixin() { + }, + _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() { + }, + _Base64Encoder_encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) { + var t1, t2, i, byteOr, byte, outputIndex0, t3, outputIndex1, + bits = state >>> 2, + expectedChars = 3 - (state & 3); + for (t1 = bytes.length, t2 = output.length, i = start, byteOr = 0; i < end; ++i) { + if (!(i < t1)) + return A.ioore(bytes, i); + byte = bytes[i]; + byteOr |= byte; + bits = (bits << 8 | byte) & 16777215; + --expectedChars; + if (expectedChars === 0) { + outputIndex0 = outputIndex + 1; + t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 18 & 63); + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = t3; + outputIndex = outputIndex0 + 1; + t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 12 & 63); + if (!(outputIndex0 < t2)) + return A.ioore(output, outputIndex0); + output[outputIndex0] = t3; + outputIndex0 = outputIndex + 1; + t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 6 & 63); + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = t3; + outputIndex = outputIndex0 + 1; + t3 = B.JSString_methods._codeUnitAt$1(alphabet, bits & 63); + if (!(outputIndex0 < t2)) + return A.ioore(output, outputIndex0); + output[outputIndex0] = t3; + bits = 0; + expectedChars = 3; + } + } + if (byteOr >= 0 && byteOr <= 255) { + if (expectedChars < 3) { + outputIndex0 = outputIndex + 1; + outputIndex1 = outputIndex0 + 1; + if (3 - expectedChars === 1) { + t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 2 & 63); + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = t1; + t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits << 4 & 63); + if (!(outputIndex0 < t2)) + return A.ioore(output, outputIndex0); + output[outputIndex0] = t1; + outputIndex = outputIndex1 + 1; + if (!(outputIndex1 < t2)) + return A.ioore(output, outputIndex1); + output[outputIndex1] = 61; + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = 61; + } else { + t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 10 & 63); + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = t1; + t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits >>> 4 & 63); + if (!(outputIndex0 < t2)) + return A.ioore(output, outputIndex0); + output[outputIndex0] = t1; + outputIndex = outputIndex1 + 1; + t1 = B.JSString_methods._codeUnitAt$1(alphabet, bits << 2 & 63); + if (!(outputIndex1 < t2)) + return A.ioore(output, outputIndex1); + output[outputIndex1] = t1; + if (!(outputIndex < t2)) + return A.ioore(output, outputIndex); + output[outputIndex] = 61; + } + return 0; + } + return (bits << 2 | 3 - expectedChars) >>> 0; + } + for (i = start; i < end;) { + if (!(i < t1)) + return A.ioore(bytes, i); + byte = bytes[i]; + if (byte > 255) + break; + ++i; + } + if (!(i < t1)) + return A.ioore(bytes, i); + throw A.wrapException(A.ArgumentError$value(bytes, "Not a byte value at index " + i + ": 0x" + B.JSInt_methods.toRadixString$1(bytes[i], 16), null)); + }, + _Base64Decoder_decodeChunk(input, start, end, output, outIndex, state) { + var t1, t2, i, charOr, char, t3, code, outIndex0, expectedPadding, + _s31_ = "Invalid encoding before padding", + _s17_ = "Invalid character", + bits = B.JSInt_methods._shrOtherPositive$1(state, 2), + count = state & 3, + inverseAlphabet = $.$get$_Base64Decoder__inverseAlphabet(); + for (t1 = inverseAlphabet.length, t2 = output.length, i = start, charOr = 0; i < end; ++i) { + char = B.JSString_methods._codeUnitAt$1(input, i); + charOr |= char; + t3 = char & 127; + if (!(t3 < t1)) + return A.ioore(inverseAlphabet, t3); + code = inverseAlphabet[t3]; + if (code >= 0) { + bits = (bits << 6 | code) & 16777215; + count = count + 1 & 3; + if (count === 0) { + outIndex0 = outIndex + 1; + if (!(outIndex < t2)) + return A.ioore(output, outIndex); + output[outIndex] = bits >>> 16 & 255; + outIndex = outIndex0 + 1; + if (!(outIndex0 < t2)) + return A.ioore(output, outIndex0); + output[outIndex0] = bits >>> 8 & 255; + outIndex0 = outIndex + 1; + if (!(outIndex < t2)) + return A.ioore(output, outIndex); + output[outIndex] = bits & 255; + outIndex = outIndex0; + bits = 0; + } + continue; + } else if (code === -1 && count > 1) { + if (charOr > 127) + break; + if (count === 3) { + if ((bits & 3) !== 0) + throw A.wrapException(A.FormatException$(_s31_, input, i)); + outIndex0 = outIndex + 1; + if (!(outIndex < t2)) + return A.ioore(output, outIndex); + output[outIndex] = bits >>> 10; + if (!(outIndex0 < t2)) + return A.ioore(output, outIndex0); + output[outIndex0] = bits >>> 2; + } else { + if ((bits & 15) !== 0) + throw A.wrapException(A.FormatException$(_s31_, input, i)); + if (!(outIndex < t2)) + return A.ioore(output, outIndex); + output[outIndex] = bits >>> 4; + } + expectedPadding = (3 - count) * 3; + if (char === 37) + expectedPadding += 2; + return A._Base64Decoder__checkPadding(input, i + 1, end, -expectedPadding - 1); + } + throw A.wrapException(A.FormatException$(_s17_, input, i)); + } + if (charOr >= 0 && charOr <= 127) + return (bits << 2 | count) >>> 0; + for (i = start; i < end; ++i) { + char = B.JSString_methods._codeUnitAt$1(input, i); + if (char > 127) + break; + } + throw A.wrapException(A.FormatException$(_s17_, input, i)); + }, + _Base64Decoder__allocateBuffer(input, start, end, state) { + var paddingStart = A._Base64Decoder__trimPaddingChars(input, start, end), + $length = (state & 3) + (paddingStart - start), + bufferLength = B.JSInt_methods._shrOtherPositive$1($length, 2) * 3, + remainderLength = $length & 3; + if (remainderLength !== 0 && paddingStart < end) + bufferLength += remainderLength - 1; + if (bufferLength > 0) + return new Uint8Array(bufferLength); + return $.$get$_Base64Decoder__emptyBuffer(); + }, + _Base64Decoder__trimPaddingChars(input, start, end) { + var char, + newEnd = end, + index = newEnd, + padding = 0; + while (true) { + if (!(index > start && padding < 2)) + break; + c$0: { + --index; + char = B.JSString_methods.codeUnitAt$1(input, index); + if (char === 61) { + ++padding; + newEnd = index; + break c$0; + } + if ((char | 32) === 100) { + if (index === start) + break; + --index; + char = B.JSString_methods.codeUnitAt$1(input, index); + } + if (char === 51) { + if (index === start) + break; + --index; + char = B.JSString_methods.codeUnitAt$1(input, index); + } + if (char === 37) { + ++padding; + newEnd = index; + break c$0; + } + break; + } + } + return newEnd; + }, + _Base64Decoder__checkPadding(input, start, end, state) { + var expectedPadding, char; + if (start === end) + return state; + expectedPadding = -state - 1; + for (; expectedPadding > 0;) { + char = B.JSString_methods._codeUnitAt$1(input, start); + if (expectedPadding === 3) { + if (char === 61) { + expectedPadding -= 3; + ++start; + break; + } + if (char === 37) { + --expectedPadding; + ++start; + if (start === end) + break; + char = B.JSString_methods._codeUnitAt$1(input, start); + } else + break; + } + if ((expectedPadding > 3 ? expectedPadding - 3 : expectedPadding) === 2) { + if (char !== 51) + break; + ++start; + --expectedPadding; + if (start === end) + break; + char = B.JSString_methods._codeUnitAt$1(input, start); + } + if ((char | 32) !== 100) + break; + ++start; + --expectedPadding; + if (start === end) + break; + } + if (start !== end) + throw A.wrapException(A.FormatException$("Invalid padding character", input, start)); + return -expectedPadding - 1; + }, + Base64Codec: function Base64Codec() { + }, + Base64Encoder: function Base64Encoder() { + }, + _Base64Encoder: function _Base64Encoder(t0) { + this._convert$_state = 0; + this._alphabet = t0; + }, + Base64Decoder: function Base64Decoder() { + }, + _Base64Decoder: function _Base64Decoder() { + this._convert$_state = 0; + }, + Codec: function Codec() { + }, + Converter: function Converter() { + }, + Error__objectToString(object) { + if (object instanceof A.Closure) + return object.toString$0(0); + return "Instance of '" + A.Primitives_objectTypeName(object) + "'"; + }, + Error__throw(error, stackTrace) { + error = A.wrapException(error); + if (error == null) + error = type$.Object._as(error); + error.stack = stackTrace.toString$0(0); + throw error; + throw A.wrapException("unreachable"); + }, + List_List$filled($length, fill, growable, $E) { + var i, + result = J.JSArray_JSArray$fixed($length, $E); + if ($length !== 0 && fill != null) + for (i = 0; i < $length; ++i) + result[i] = fill; + return result; + }, + List_List$of(elements, growable, $E) { + var t1 = A.List_List$_of(elements, $E); + return t1; + }, + List_List$_of(elements, $E) { + var list, t1; + if (Array.isArray(elements)) + return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>")); + list = A._setArrayType([], $E._eval$1("JSArray<0>")); + for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();) + B.JSArray_methods.add$1(list, t1.get$current(t1)); + return list; + }, + String_String$fromCharCodes(charCodes) { + var t1 = A.Primitives_stringFromNativeUint8List(charCodes, 0, A.RangeError_checkValidRange(0, null, charCodes.length)); + return t1; + }, + StringBuffer__writeAll(string, objects, separator) { + var iterator = J.get$iterator$ax(objects); + if (!iterator.moveNext$0()) + return string; + if (separator.length === 0) { + do + string += A.S(iterator.get$current(iterator)); + while (iterator.moveNext$0()); + } else { + string += A.S(iterator.get$current(iterator)); + for (; iterator.moveNext$0();) + string = string + separator + A.S(iterator.get$current(iterator)); + } + return string; + }, + NoSuchMethodError$_(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames) { + return new A.NoSuchMethodError(receiver, memberName, positionalArguments, namedArguments, existingArgumentNames); + }, + DateTime__fourDigits(n) { + var absN = Math.abs(n), + sign = n < 0 ? "-" : ""; + if (absN >= 1000) + return "" + n; + if (absN >= 100) + return sign + "0" + absN; + if (absN >= 10) + return sign + "00" + absN; + return sign + "000" + absN; + }, + DateTime__threeDigits(n) { + if (n >= 100) + return "" + n; + if (n >= 10) + return "0" + n; + return "00" + n; + }, + DateTime__twoDigits(n) { + if (n >= 10) + return "" + n; + return "0" + n; + }, + Error_safeToString(object) { + if (typeof object == "number" || A._isBool(object) || object == null) + return J.toString$0$(object); + if (typeof object == "string") + return JSON.stringify(object); + return A.Error__objectToString(object); + }, + AssertionError$(message) { + return new A.AssertionError(message); + }, + ArgumentError$(message, $name) { + return new A.ArgumentError(false, null, $name, message); + }, + ArgumentError$value(value, $name, message) { + return new A.ArgumentError(true, value, $name, message); + }, + RangeError$value(value, $name) { + return new A.RangeError(null, null, true, value, $name, "Value not in range"); + }, + RangeError$range(invalidValue, minValue, maxValue, $name, message) { + return new A.RangeError(minValue, maxValue, true, invalidValue, $name, "Invalid value"); + }, + RangeError_checkValidRange(start, end, $length) { + if (0 > start || start > $length) + throw A.wrapException(A.RangeError$range(start, 0, $length, "start", null)); + if (end != null) { + if (start > end || end > $length) + throw A.wrapException(A.RangeError$range(end, start, $length, "end", null)); + return end; + } + return $length; + }, + RangeError_checkNotNegative(value, $name) { + if (value < 0) + throw A.wrapException(A.RangeError$range(value, 0, null, $name, null)); + return value; + }, + IndexError$withLength(invalidValue, $length, indexable, $name) { + return new A.IndexError($length, true, invalidValue, $name, "Index out of range"); + }, + UnsupportedError$(message) { + return new A.UnsupportedError(message); + }, + UnimplementedError$(message) { + return new A.UnimplementedError(message); + }, + StateError$(message) { + return new A.StateError(message); + }, + ConcurrentModificationError$(modifiedObject) { + return new A.ConcurrentModificationError(modifiedObject); + }, + Exception_Exception(message) { + return new A._Exception(message); + }, + FormatException$(message, source, offset) { + return new A.FormatException(message, source, offset); + }, + Object_hash(object1, object2, object3, object4) { + var t2, + t1 = B.JSNumber_methods.get$hashCode(object1); + object2 = B.JSNumber_methods.get$hashCode(object2); + object3 = B.JSNumber_methods.get$hashCode(object3); + object4 = B.JSNumber_methods.get$hashCode(object4); + t2 = $.$get$_hashSeed(); + return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(t2, t1), object2), object3), object4)); + }, + print(object) { + A.printString(object); + }, + NoSuchMethodError_toString_closure: function NoSuchMethodError_toString_closure(t0, t1) { + this._box_0 = t0; + this.sb = t1; + }, + DateTime: function DateTime(t0, t1) { + this._value = t0; + this.isUtc = t1; + }, + _Enum: function _Enum() { + }, + Error: function Error() { + }, + AssertionError: function AssertionError(t0) { + this.message = t0; + }, + TypeError: function TypeError() { + }, + NullThrownError: function NullThrownError() { + }, + ArgumentError: function ArgumentError(t0, t1, t2, t3) { + var _ = this; + _._hasValue = t0; + _.invalidValue = t1; + _.name = t2; + _.message = t3; + }, + RangeError: function RangeError(t0, t1, t2, t3, t4, t5) { + var _ = this; + _.start = t0; + _.end = t1; + _._hasValue = t2; + _.invalidValue = t3; + _.name = t4; + _.message = t5; + }, + IndexError: function IndexError(t0, t1, t2, t3, t4) { + var _ = this; + _.length = t0; + _._hasValue = t1; + _.invalidValue = t2; + _.name = t3; + _.message = t4; + }, + NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3, t4) { + var _ = this; + _._core$_receiver = t0; + _._core$_memberName = t1; + _._core$_arguments = t2; + _._namedArguments = t3; + _._existingArgumentNames = t4; + }, + UnsupportedError: function UnsupportedError(t0) { + this.message = t0; + }, + UnimplementedError: function UnimplementedError(t0) { + this.message = t0; + }, + StateError: function StateError(t0) { + this.message = t0; + }, + ConcurrentModificationError: function ConcurrentModificationError(t0) { + this.modifiedObject = t0; + }, + OutOfMemoryError: function OutOfMemoryError() { + }, + StackOverflowError: function StackOverflowError() { + }, + CyclicInitializationError: function CyclicInitializationError(t0) { + this.variableName = t0; + }, + _Exception: function _Exception(t0) { + this.message = t0; + }, + FormatException: function FormatException(t0, t1, t2) { + this.message = t0; + this.source = t1; + this.offset = t2; + }, + Iterable: function Iterable() { + }, + Iterator: function Iterator() { + }, + Null: function Null() { + }, + Object: function Object() { + }, + _StringStackTrace: function _StringStackTrace() { + }, + StringBuffer: function StringBuffer(t0) { + this._contents = t0; + }, + _EventStreamSubscription$(_target, _eventType, onData, _useCapture, $T) { + var t1 = A._wrapZone(new A._EventStreamSubscription_closure(onData), type$.Event); + if (t1 != null && true) + B.DedicatedWorkerGlobalScope_methods.addEventListener$3(_target, _eventType, t1, false); + return new A._EventStreamSubscription(_target, _eventType, t1, false, $T._eval$1("_EventStreamSubscription<0>")); + }, + _wrapZone(callback, $T) { + var t1 = $.Zone__current; + if (t1 === B.C__RootZone) + return callback; + return t1.bindUnaryCallbackGuarded$1$1(callback, $T); + }, + HtmlElement: function HtmlElement() { + }, + AccessibleNodeList: function AccessibleNodeList() { + }, + AnchorElement: function AnchorElement() { + }, + AreaElement: function AreaElement() { + }, + Blob: function Blob() { + }, + CharacterData: function CharacterData() { + }, + CryptoKey: function CryptoKey() { + }, + CssPerspective: function CssPerspective() { + }, + CssRule: function CssRule() { + }, + CssStyleDeclaration: function CssStyleDeclaration() { + }, + CssStyleDeclarationBase: function CssStyleDeclarationBase() { + }, + CssStyleValue: function CssStyleValue() { + }, + CssTransformComponent: function CssTransformComponent() { + }, + CssTransformValue: function CssTransformValue() { + }, + CssUnparsedValue: function CssUnparsedValue() { + }, + DataTransferItem: function DataTransferItem() { + }, + DataTransferItemList: function DataTransferItemList() { + }, + DedicatedWorkerGlobalScope: function DedicatedWorkerGlobalScope() { + }, + DomException: function DomException() { + }, + DomRectList: function DomRectList() { + }, + DomRectReadOnly: function DomRectReadOnly() { + }, + DomStringList: function DomStringList() { + }, + DomTokenList: function DomTokenList() { + }, + Element: function Element() { + }, + Event: function Event() { + }, + EventTarget: function EventTarget() { + }, + File: function File() { + }, + FileList: function FileList() { + }, + FileWriter: function FileWriter() { + }, + FormElement: function FormElement() { + }, + Gamepad: function Gamepad() { + }, + History: function History() { + }, + HtmlCollection: function HtmlCollection() { + }, + ImageData: function ImageData() { + }, + Location: function Location() { + }, + MediaDeviceInfo: function MediaDeviceInfo() { + }, + MediaList: function MediaList() { + }, + MediaStreamTrack: function MediaStreamTrack() { + }, + MessageEvent: function MessageEvent() { + }, + MessagePort: function MessagePort() { + }, + MidiInputMap: function MidiInputMap() { + }, + MidiInputMap_keys_closure: function MidiInputMap_keys_closure(t0) { + this.keys = t0; + }, + MidiOutputMap: function MidiOutputMap() { + }, + MidiOutputMap_keys_closure: function MidiOutputMap_keys_closure(t0) { + this.keys = t0; + }, + MimeType: function MimeType() { + }, + MimeTypeArray: function MimeTypeArray() { + }, + Node: function Node() { + }, + NodeList: function NodeList() { + }, + Plugin: function Plugin() { + }, + PluginArray: function PluginArray() { + }, + RtcStatsReport: function RtcStatsReport() { + }, + RtcStatsReport_keys_closure: function RtcStatsReport_keys_closure(t0) { + this.keys = t0; + }, + SelectElement: function SelectElement() { + }, + SharedArrayBuffer: function SharedArrayBuffer() { + }, + SourceBuffer: function SourceBuffer() { + }, + SourceBufferList: function SourceBufferList() { + }, + SpeechGrammar: function SpeechGrammar() { + }, + SpeechGrammarList: function SpeechGrammarList() { + }, + SpeechRecognitionResult: function SpeechRecognitionResult() { + }, + Storage: function Storage() { + }, + Storage_keys_closure: function Storage_keys_closure(t0) { + this.keys = t0; + }, + StyleSheet: function StyleSheet() { + }, + TextTrack: function TextTrack() { + }, + TextTrackCue: function TextTrackCue() { + }, + TextTrackCueList: function TextTrackCueList() { + }, + TextTrackList: function TextTrackList() { + }, + TimeRanges: function TimeRanges() { + }, + Touch: function Touch() { + }, + TouchList: function TouchList() { + }, + TrackDefaultList: function TrackDefaultList() { + }, + TrackElement: function TrackElement() { + }, + Url: function Url() { + }, + VideoTrack: function VideoTrack() { + }, + VideoTrackList: function VideoTrackList() { + }, + WorkerGlobalScope: function WorkerGlobalScope() { + }, + _CssRuleList: function _CssRuleList() { + }, + _DomRect: function _DomRect() { + }, + _GamepadList: function _GamepadList() { + }, + _NamedNodeMap: function _NamedNodeMap() { + }, + _SpeechRecognitionResultList: function _SpeechRecognitionResultList() { + }, + _StyleSheetList: function _StyleSheetList() { + }, + EventStreamProvider: function EventStreamProvider(t0) { + this.$ti = t0; + }, + _EventStream: function _EventStream(t0, t1, t2, t3) { + var _ = this; + _._target = t0; + _._eventType = t1; + _._useCapture = t2; + _.$ti = t3; + }, + _EventStreamSubscription: function _EventStreamSubscription(t0, t1, t2, t3, t4) { + var _ = this; + _._target = t0; + _._eventType = t1; + _._onData = t2; + _._useCapture = t3; + _.$ti = t4; + }, + _EventStreamSubscription_closure: function _EventStreamSubscription_closure(t0) { + this.onData = t0; + }, + ImmutableListMixin: function ImmutableListMixin() { + }, + FixedSizeListIterator: function FixedSizeListIterator(t0, t1, t2) { + var _ = this; + _._array = t0; + _._html$_length = t1; + _._position = -1; + _._html$_current = null; + _.$ti = t2; + }, + _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase: function _CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase() { + }, + _DomRectList_JavaScriptObject_ListMixin: function _DomRectList_JavaScriptObject_ListMixin() { + }, + _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _DomStringList_JavaScriptObject_ListMixin: function _DomStringList_JavaScriptObject_ListMixin() { + }, + _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _FileList_JavaScriptObject_ListMixin: function _FileList_JavaScriptObject_ListMixin() { + }, + _FileList_JavaScriptObject_ListMixin_ImmutableListMixin: function _FileList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _HtmlCollection_JavaScriptObject_ListMixin: function _HtmlCollection_JavaScriptObject_ListMixin() { + }, + _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin: function _HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _MidiInputMap_JavaScriptObject_MapMixin: function _MidiInputMap_JavaScriptObject_MapMixin() { + }, + _MidiOutputMap_JavaScriptObject_MapMixin: function _MidiOutputMap_JavaScriptObject_MapMixin() { + }, + _MimeTypeArray_JavaScriptObject_ListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin() { + }, + _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _NodeList_JavaScriptObject_ListMixin: function _NodeList_JavaScriptObject_ListMixin() { + }, + _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NodeList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _PluginArray_JavaScriptObject_ListMixin: function _PluginArray_JavaScriptObject_ListMixin() { + }, + _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin: function _PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _RtcStatsReport_JavaScriptObject_MapMixin: function _RtcStatsReport_JavaScriptObject_MapMixin() { + }, + _SourceBufferList_EventTarget_ListMixin: function _SourceBufferList_EventTarget_ListMixin() { + }, + _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin: function _SourceBufferList_EventTarget_ListMixin_ImmutableListMixin() { + }, + _SpeechGrammarList_JavaScriptObject_ListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin() { + }, + _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin: function _SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _Storage_JavaScriptObject_MapMixin: function _Storage_JavaScriptObject_MapMixin() { + }, + _TextTrackCueList_JavaScriptObject_ListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin() { + }, + _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _TextTrackList_EventTarget_ListMixin: function _TextTrackList_EventTarget_ListMixin() { + }, + _TextTrackList_EventTarget_ListMixin_ImmutableListMixin: function _TextTrackList_EventTarget_ListMixin_ImmutableListMixin() { + }, + _TouchList_JavaScriptObject_ListMixin: function _TouchList_JavaScriptObject_ListMixin() { + }, + _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TouchList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + __CssRuleList_JavaScriptObject_ListMixin: function __CssRuleList_JavaScriptObject_ListMixin() { + }, + __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin: function __CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + __GamepadList_JavaScriptObject_ListMixin: function __GamepadList_JavaScriptObject_ListMixin() { + }, + __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin: function __GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + __NamedNodeMap_JavaScriptObject_ListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin() { + }, + __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin: function __NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + __SpeechRecognitionResultList_JavaScriptObject_ListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin() { + }, + __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin: function __SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + __StyleSheetList_JavaScriptObject_ListMixin: function __StyleSheetList_JavaScriptObject_ListMixin() { + }, + __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin: function __StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _convertNativeToDart_Value(value) { + var values, i; + if (value == null) + return value; + if (typeof value == "string" || typeof value == "number" || A._isBool(value)) + return value; + if (A.isJavaScriptSimpleObject(value)) + return A.convertNativeToDart_Dictionary(value); + if (Array.isArray(value)) { + values = []; + for (i = 0; i < value.length; ++i) + values.push(A._convertNativeToDart_Value(value[i])); + return values; + } + return value; + }, + convertNativeToDart_Dictionary(object) { + var dict, keys, t1, _i, key; + if (object == null) + return null; + dict = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic); + keys = Object.getOwnPropertyNames(object); + for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) { + key = keys[_i]; + dict.$indexSet(0, key, A._convertNativeToDart_Value(object[key])); + } + return dict; + }, + isJavaScriptSimpleObject(value) { + var proto = Object.getPrototypeOf(value); + return proto === Object.prototype || proto === null; + }, + _StructuredClone: function _StructuredClone() { + }, + _StructuredClone_walk_closure: function _StructuredClone_walk_closure(t0, t1) { + this._box_0 = t0; + this.$this = t1; + }, + _StructuredClone_walk_closure0: function _StructuredClone_walk_closure0(t0, t1) { + this._box_0 = t0; + this.$this = t1; + }, + _AcceptStructuredClone: function _AcceptStructuredClone() { + }, + _AcceptStructuredClone_walk_closure: function _AcceptStructuredClone_walk_closure(t0, t1) { + this.$this = t0; + this.map = t1; + }, + _StructuredCloneDart2Js: function _StructuredCloneDart2Js(t0, t1) { + this.values = t0; + this.copies = t1; + }, + _AcceptStructuredCloneDart2Js: function _AcceptStructuredCloneDart2Js(t0, t1) { + this.values = t0; + this.copies = t1; + this.mustCopy = false; + }, + jsify(object) { + return A._convertDataTree(object); + }, + _convertDataTree(data) { + var t1 = new A._convertDataTree__convert(new A._IdentityHashMap(type$._IdentityHashMap_dynamic_dynamic)).call$1(data); + t1.toString; + return t1; + }, + promiseToFuture(jsPromise, $T) { + var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")), + completer = new A._AsyncCompleter(t1, $T._eval$1("_AsyncCompleter<0>")); + jsPromise.then(A.convertDartClosureToJS(new A.promiseToFuture_closure(completer, $T), 1), A.convertDartClosureToJS(new A.promiseToFuture_closure0(completer), 1)); + return t1; + }, + _convertDataTree__convert: function _convertDataTree__convert(t0) { + this._convertedObjects = t0; + }, + promiseToFuture_closure: function promiseToFuture_closure(t0, t1) { + this.completer = t0; + this.T = t1; + }, + promiseToFuture_closure0: function promiseToFuture_closure0(t0) { + this.completer = t0; + }, + NullRejectionException: function NullRejectionException(t0) { + this.isUndefined = t0; + }, + _JSSecureRandom: function _JSSecureRandom(t0) { + this._math$_buffer = t0; + }, + Length: function Length() { + }, + LengthList: function LengthList() { + }, + Number: function Number() { + }, + NumberList: function NumberList() { + }, + PointList: function PointList() { + }, + StringList: function StringList() { + }, + Transform: function Transform() { + }, + TransformList: function TransformList() { + }, + _LengthList_JavaScriptObject_ListMixin: function _LengthList_JavaScriptObject_ListMixin() { + }, + _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin: function _LengthList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _NumberList_JavaScriptObject_ListMixin: function _NumberList_JavaScriptObject_ListMixin() { + }, + _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin: function _NumberList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _StringList_JavaScriptObject_ListMixin: function _StringList_JavaScriptObject_ListMixin() { + }, + _StringList_JavaScriptObject_ListMixin_ImmutableListMixin: function _StringList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + _TransformList_JavaScriptObject_ListMixin: function _TransformList_JavaScriptObject_ListMixin() { + }, + _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin: function _TransformList_JavaScriptObject_ListMixin_ImmutableListMixin() { + }, + AudioBuffer: function AudioBuffer() { + }, + AudioParamMap: function AudioParamMap() { + }, + AudioParamMap_keys_closure: function AudioParamMap_keys_closure(t0) { + this.keys = t0; + }, + AudioTrack: function AudioTrack() { + }, + AudioTrackList: function AudioTrackList() { + }, + BaseAudioContext: function BaseAudioContext() { + }, + OfflineAudioContext: function OfflineAudioContext() { + }, + _AudioParamMap_JavaScriptObject_MapMixin: function _AudioParamMap_JavaScriptObject_MapMixin() { + }, + WritableStream: function WritableStream() { + }, + ReadableStream: function ReadableStream() { + }, + TransformStream: function TransformStream() { + }, + TransformStreamDefaultController: function TransformStreamDefaultController() { + }, + EncodedStreams: function EncodedStreams() { + }, + RTCEncodedFrame: function RTCEncodedFrame() { + }, + RTCEncodedAudioFrame: function RTCEncodedAudioFrame() { + }, + RTCEncodedVideoFrame: function RTCEncodedVideoFrame() { + }, + RTCEncodedFrameMetadata: function RTCEncodedFrameMetadata() { + }, + RTCEncodedAudioFrameMetadata: function RTCEncodedAudioFrameMetadata() { + }, + RTCEncodedVideoFrameMetadata: function RTCEncodedVideoFrameMetadata() { + }, + RTCTransformEvent: function RTCTransformEvent() { + }, + RTCRtpScriptTransformer: function RTCRtpScriptTransformer() { + }, + RTCRtpScriptTransform: function RTCRtpScriptTransform() { + }, + jsArrayBufferFrom(data) { + if (type$.Uint8List._is(data) && data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) + return data.buffer; + return new Uint8Array(A._ensureNativeList(data)).buffer; + }, + impportKeyFromRawData(secretKeyData, keyUsages, webCryptoAlgorithm) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.CryptoKey), + $async$returnValue, t1; + var $async$impportKeyFromRawData = 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 + t1 = type$.String; + $async$returnValue = A.promiseToFuture(self.crypto.subtle.importKey("raw", A.jsArrayBufferFrom(secretKeyData), A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", webCryptoAlgorithm], t1, t1)), false, keyUsages), type$.CryptoKey); + // goto return + $async$goto = 1; + break; + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + } + }); + return A._asyncStartSync($async$impportKeyFromRawData, $async$completer); + }, + Promise: function Promise() { + }, + Algorithm: function Algorithm() { + }, + AesGcmParams: function AesGcmParams() { + }, + KeyOptions$(ratchetSalt, ratchetWindowSize, sharedKey, uncryptedMagicBytes) { + return new A.KeyOptions(sharedKey, ratchetSalt, ratchetWindowSize, uncryptedMagicBytes); + }, + findNALUIndices(stream) { + var start, pos0, t1, end, + result = A._setArrayType([], type$.JSArray_int), + pos = stream.length, + searchLength = pos - 2; + for (start = 0, pos0 = 0; pos0 < searchLength; start = pos0) { + while (true) { + if (pos0 < searchLength) { + if (!(pos0 >= 0)) + return A.ioore(stream, pos0); + t1 = !(stream[pos0] === 0 && stream[pos0 + 1] === 0 && stream[pos0 + 2] === 1); + } else + t1 = false; + if (!t1) + break; + ++pos0; + } + if (pos0 >= searchLength) + pos0 = pos; + end = pos0; + while (true) { + if (end > start) { + t1 = end - 1; + if (!(t1 >= 0)) + return A.ioore(stream, t1); + t1 = stream[t1] === 0; + } else + t1 = false; + if (!t1) + break; + --end; + } + if (start === 0) { + if (end !== start) + throw A.wrapException(A.Exception_Exception("byte stream contains leading data")); + } else + B.JSArray_methods.add$1(result, start); + pos0 += 3; + } + return result; + }, + FrameCryptor$(keyOptions, participantId, trackId, worker) { + var t1 = type$.int; + return new A.FrameCryptor(A.LinkedHashMap_LinkedHashMap$_empty(t1, t1), participantId, trackId, keyOptions, B.CryptorError_0, worker, A.List_List$filled(16, null, false, type$.nullable_KeySet)); + }, + KeyOptions: function KeyOptions(t0, t1, t2, t3) { + var _ = this; + _.sharedKey = t0; + _.ratchetSalt = t1; + _.ratchetWindowSize = t2; + _.uncryptedMagicBytes = t3; + }, + CryptorError: function CryptorError(t0) { + this._name = t0; + }, + KeySet: function KeySet(t0, t1) { + this.material = t0; + this.encryptionKey = t1; + }, + FrameCryptor: function FrameCryptor(t0, t1, t2, t3, t4, t5, t6) { + var _ = this; + _.sendCounts = t0; + _.participantId = t1; + _.trackId = t2; + _.codec = null; + _.keyOptions = t3; + _.__FrameCryptor_kind_A = $; + _.enabled = false; + _.lastError = t4; + _.worker = t5; + _.currentKeyIndex = 0; + _._ratchetCompleter = null; + _.cryptoKeyRing = t6; + }, + FrameCryptor_ratchetKey_closure: function FrameCryptor_ratchetKey_closure(t0, t1) { + this.$this = t0; + this.keyIndex = t1; + }, + FrameCryptor_ratchetKey__closure: function FrameCryptor_ratchetKey__closure(t0, t1) { + this.$this = t0; + this.keyIndex = t1; + }, + FrameCryptor_ratchetKey___closure: function FrameCryptor_ratchetKey___closure(t0) { + this.$this = t0; + }, + main() { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic), + t1, t2; + var $async$main = 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 + A.print("E2EE Worker created"); + if (self.self.RTCTransformEvent != null) { + A.print("setup transform event handler"); + self.self.onrtctransform = A.allowInterop(new A.main_closure(), type$.dynamic_Function_dynamic); + } + t1 = type$.nullable_EventTarget._as(self.self); + t2 = type$.nullable_void_Function_MessageEvent._as(new A.main_closure0()); + type$.nullable_void_Function._as(null); + A._EventStreamSubscription$(t1, "message", t2, false, type$.MessageEvent); + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$main, $async$completer); + }, + TransformMessage: function TransformMessage() { + }, + EnableTransformMessage: function EnableTransformMessage() { + }, + RemoveTransformMessage: function RemoveTransformMessage() { + }, + main_closure: function main_closure() { + }, + main__closure8: function main__closure8(t0) { + this.trackId = t0; + }, + main_closure0: function main_closure0() { + }, + main__closure: function main__closure(t0) { + this.participantId = t0; + }, + main__closure0: function main__closure0(t0) { + this.trackId = t0; + }, + main__closure1: function main__closure1(t0) { + this.trackId = t0; + }, + main__closure2: function main__closure2(t0) { + this.participantId = t0; + }, + main__closure3: function main__closure3(t0) { + this.participantId = t0; + }, + main__closure4: function main__closure4(t0, t1, t2) { + this.c = t0; + this.keySet = t1; + this.participantId = t2; + }, + main__closure5: function main__closure5(t0) { + this.participantId = t0; + }, + main__closure6: function main__closure6(t0) { + this.trackId = t0; + }, + main__closure7: function main__closure7(t0) { + this.trackId = t0; + }, + printString(string) { + if (typeof dartPrint == "function") { + dartPrint(string); + return; + } + if (typeof console == "object" && typeof console.log != "undefined") { + console.log(string); + return; + } + if (typeof window == "object") + return; + if (typeof print == "function") { + print(string); + return; + } + throw "Unable to print message: " + String(string); + }, + throwLateFieldNI(fieldName) { + return A.throwExpression(A.LateError$fieldNI(fieldName)); + }, + throwLateFieldADI(fieldName) { + return A.throwExpression(new A.LateError("Field '" + fieldName + "' has been assigned during initialization.")); + }, + _convertDartFunctionFast(f) { + var ret, + existing = f.$dart_jsFunction; + if (existing != null) + return existing; + ret = function(_call, f) { + return function() { + return _call(f, Array.prototype.slice.apply(arguments)); + }; + }(A._callDartFunctionFast, f); + ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f; + f.$dart_jsFunction = ret; + return ret; + }, + _callDartFunctionFast(callback, $arguments) { + type$.List_dynamic._as($arguments); + type$.Function._as(callback); + return A.Primitives_applyFunction(callback, $arguments, null); + }, + allowInterop(f, $F) { + if (typeof f == "function") + return f; + else + return $F._as(A._convertDartFunctionFast(f)); + }, + IterableExtension_firstWhereOrNull(_this, test, $T) { + var t1, _i, element; + for (t1 = _this.length, _i = 0; _i < _this.length; _this.length === t1 || (0, A.throwConcurrentModificationError)(_this), ++_i) { + element = _this[_i]; + if (A.boolConversionCheck(test.call$1(element))) + return element; + } + return null; + }, + getAlgoOptions(algorithmName, salt) { + var t1; + switch (algorithmName) { + case "HKDF": + t1 = A.jsArrayBufferFrom(salt); + return A.LinkedHashMap_LinkedHashMap$_literal(["name", "HKDF", "salt", t1, "hash", "SHA-256", "info", A.jsArrayBufferFrom(new Uint8Array(128))], type$.String, type$.Object); + case "PBKDF2": + return A.LinkedHashMap_LinkedHashMap$_literal(["name", "PBKDF2", "salt", A.jsArrayBufferFrom(salt), "hash", "SHA-256", "iterations", 100000], type$.String, type$.Object); + default: + throw A.wrapException(A.Exception_Exception("algorithm " + algorithmName + " is currently unsupported")); + } + } + }, + J = { + makeDispatchRecord(interceptor, proto, extension, indexability) { + return {i: interceptor, p: proto, e: extension, x: indexability}; + }, + getNativeInterceptor(object) { + var proto, objectProto, $constructor, interceptor, t1, + record = object[init.dispatchPropertyName]; + if (record == null) + if ($.initNativeDispatchFlag == null) { + A.initNativeDispatch(); + record = object[init.dispatchPropertyName]; + } + if (record != null) { + proto = record.p; + if (false === proto) + return record.i; + if (true === proto) + return object; + objectProto = Object.getPrototypeOf(object); + if (proto === objectProto) + return record.i; + if (record.e === objectProto) + throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record)))); + } + $constructor = object.constructor; + if ($constructor == null) + interceptor = null; + else { + t1 = $._JS_INTEROP_INTERCEPTOR_TAG; + if (t1 == null) + t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); + interceptor = $constructor[t1]; + } + if (interceptor != null) + return interceptor; + interceptor = A.lookupAndCacheInterceptor(object); + if (interceptor != null) + return interceptor; + if (typeof object == "function") + return B.JavaScriptFunction_methods; + proto = Object.getPrototypeOf(object); + if (proto == null) + return B.PlainJavaScriptObject_methods; + if (proto === Object.prototype) + return B.PlainJavaScriptObject_methods; + if (typeof $constructor == "function") { + t1 = $._JS_INTEROP_INTERCEPTOR_TAG; + if (t1 == null) + t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js"); + Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true}); + return B.UnknownJavaScriptObject_methods; + } + return B.UnknownJavaScriptObject_methods; + }, + JSArray_JSArray$fixed($length, $E) { + if ($length < 0 || $length > 4294967295) + throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null)); + return J.JSArray_JSArray$markFixed(new Array($length), $E); + }, + JSArray_JSArray$markFixed(allocation, $E) { + return J.JSArray_markFixedList(A._setArrayType(allocation, $E._eval$1("JSArray<0>")), $E); + }, + JSArray_markFixedList(list, $T) { + list.fixed$length = Array; + return list; + }, + getInterceptor$(receiver) { + if (typeof receiver == "number") { + if (Math.floor(receiver) == receiver) + return J.JSInt.prototype; + return J.JSNumNotInt.prototype; + } + if (typeof receiver == "string") + return J.JSString.prototype; + if (receiver == null) + return J.JSNull.prototype; + if (typeof receiver == "boolean") + return J.JSBool.prototype; + if (receiver.constructor == Array) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$asx(receiver) { + if (typeof receiver == "string") + return J.JSString.prototype; + if (receiver == null) + return receiver; + if (receiver.constructor == Array) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$ax(receiver) { + if (receiver == null) + return receiver; + if (receiver.constructor == Array) + return J.JSArray.prototype; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + getInterceptor$x(receiver) { + if (receiver == null) + return receiver; + if (typeof receiver != "object") { + if (typeof receiver == "function") + return J.JavaScriptFunction.prototype; + return receiver; + } + if (receiver instanceof A.Object) + return receiver; + return J.getNativeInterceptor(receiver); + }, + get$data$x(receiver) { + return J.getInterceptor$x(receiver).get$data(receiver); + }, + get$hashCode$(receiver) { + return J.getInterceptor$(receiver).get$hashCode(receiver); + }, + get$iterator$ax(receiver) { + return J.getInterceptor$ax(receiver).get$iterator(receiver); + }, + get$length$asx(receiver) { + return J.getInterceptor$asx(receiver).get$length(receiver); + }, + get$name$x(receiver) { + return J.getInterceptor$x(receiver).get$name(receiver); + }, + get$synchronizationSource$x(receiver) { + return J.getInterceptor$x(receiver).get$synchronizationSource(receiver); + }, + get$type$x(receiver) { + return J.getInterceptor$x(receiver).get$type(receiver); + }, + $eq$(receiver, a0) { + if (receiver == null) + return a0 == null; + if (typeof receiver != "object") + return a0 != null && receiver === a0; + return J.getInterceptor$(receiver).$eq(receiver, a0); + }, + $index$asx(receiver, a0) { + if (typeof a0 === "number") + if (receiver.constructor == Array || typeof receiver == "string" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) + if (a0 >>> 0 === a0 && a0 < receiver.length) + return receiver[a0]; + return J.getInterceptor$asx(receiver).$index(receiver, a0); + }, + add$1$ax(receiver, a0) { + return J.getInterceptor$ax(receiver).add$1(receiver, a0); + }, + elementAt$1$ax(receiver, a0) { + return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0); + }, + enqueue$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).enqueue$1(receiver, a0); + }, + forEach$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).forEach$1(receiver, a0); + }, + map$1$1$ax(receiver, a0, $T1) { + return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1); + }, + noSuchMethod$1$(receiver, a0) { + return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0); + }, + pipeThrough$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).pipeThrough$1(receiver, a0); + }, + pipeTo$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).pipeTo$1(receiver, a0); + }, + postMessage$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).postMessage$1(receiver, a0); + }, + setInt8$2$x(receiver, a0, a1) { + return J.getInterceptor$x(receiver).setInt8$2(receiver, a0, a1); + }, + skip$1$ax(receiver, a0) { + return J.getInterceptor$ax(receiver).skip$1(receiver, a0); + }, + sublist$1$x(receiver, a0) { + return J.getInterceptor$x(receiver).sublist$1(receiver, a0); + }, + sublist$2$x(receiver, a0, a1) { + return J.getInterceptor$x(receiver).sublist$2(receiver, a0, a1); + }, + toString$0$(receiver) { + return J.getInterceptor$(receiver).toString$0(receiver); + }, + Interceptor: function Interceptor() { + }, + JSBool: function JSBool() { + }, + JSNull: function JSNull() { + }, + JavaScriptObject: function JavaScriptObject() { + }, + LegacyJavaScriptObject: function LegacyJavaScriptObject() { + }, + PlainJavaScriptObject: function PlainJavaScriptObject() { + }, + UnknownJavaScriptObject: function UnknownJavaScriptObject() { + }, + JavaScriptFunction: function JavaScriptFunction() { + }, + JSArray: function JSArray(t0) { + this.$ti = t0; + }, + JSUnmodifiableArray: function JSUnmodifiableArray(t0) { + this.$ti = t0; + }, + ArrayIterator: function ArrayIterator(t0, t1, t2) { + var _ = this; + _._iterable = t0; + _.__interceptors$_length = t1; + _._index = 0; + _._current = null; + _.$ti = t2; + }, + JSNumber: function JSNumber() { + }, + JSInt: function JSInt() { + }, + JSNumNotInt: function JSNumNotInt() { + }, + JSString: function JSString() { + } + }, + B = {}; + var holders = [A, J, B]; + var $ = {}; + A.JS_CONST.prototype = {}; + J.Interceptor.prototype = { + $eq(receiver, other) { + return receiver === other; + }, + get$hashCode(receiver) { + return A.Primitives_objectHashCode(receiver); + }, + toString$0(receiver) { + return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'"; + }, + noSuchMethod$1(receiver, invocation) { + type$.Invocation._as(invocation); + throw A.wrapException(new A.NoSuchMethodError(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments(), null)); + } + }; + J.JSBool.prototype = { + toString$0(receiver) { + return String(receiver); + }, + get$hashCode(receiver) { + return receiver ? 519018 : 218159; + }, + $isbool: 1 + }; + J.JSNull.prototype = { + $eq(receiver, other) { + return null == other; + }, + toString$0(receiver) { + return "null"; + }, + get$hashCode(receiver) { + return 0; + }, + $isNull: 1 + }; + J.JavaScriptObject.prototype = {}; + J.LegacyJavaScriptObject.prototype = { + get$hashCode(receiver) { + return 0; + }, + toString$0(receiver) { + return String(receiver); + }, + $isJSObject: 1, + $isWritableStream: 1, + $isReadableStream: 1, + $isTransformStreamDefaultController: 1, + $isRTCEncodedFrame: 1, + $isRTCTransformEvent: 1, + $isAlgorithm: 1, + pipeThrough$1(receiver, p0) { + return receiver.pipeThrough(p0); + }, + pipeTo$1(receiver, p0) { + return receiver.pipeTo(p0); + }, + enqueue$1(receiver, p0) { + return receiver.enqueue(p0); + }, + get$timestamp(obj) { + return obj.timestamp; + }, + get$data(obj) { + return obj.data; + }, + set$data(obj, v) { + return obj.data = v; + }, + getMetadata$0(receiver) { + return receiver.getMetadata(); + }, + get$type(obj) { + return obj.type; + }, + get$synchronizationSource(obj) { + return obj.synchronizationSource; + }, + get$name(obj) { + return obj.name; + }, + get$msgType(obj) { + return obj.msgType; + }, + get$kind(obj) { + return obj.kind; + }, + get$participantId(obj) { + return obj.participantId; + }, + get$trackId(obj) { + return obj.trackId; + }, + get$codec(obj) { + return obj.codec; + } + }; + J.PlainJavaScriptObject.prototype = {}; + J.UnknownJavaScriptObject.prototype = {}; + J.JavaScriptFunction.prototype = { + toString$0(receiver) { + var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()]; + if (dartClosure == null) + return this.super$LegacyJavaScriptObject$toString(receiver); + return "JavaScript function for " + J.toString$0$(dartClosure); + }, + $isFunction: 1 + }; + J.JSArray.prototype = { + add$1(receiver, value) { + A._arrayInstanceType(receiver)._precomputed1._as(value); + if (!!receiver.fixed$length) + A.throwExpression(A.UnsupportedError$("add")); + receiver.push(value); + }, + _removeWhere$2(receiver, test, removeMatching) { + var retained, end, i, element, t1; + A._arrayInstanceType(receiver)._eval$1("bool(1)")._as(test); + retained = []; + end = receiver.length; + for (i = 0; i < end; ++i) { + element = receiver[i]; + if (!A.boolConversionCheck(test.call$1(element))) + retained.push(element); + if (receiver.length !== end) + throw A.wrapException(A.ConcurrentModificationError$(receiver)); + } + t1 = retained.length; + if (t1 === end) + return; + this.set$length(receiver, t1); + for (i = 0; i < retained.length; ++i) + receiver[i] = retained[i]; + }, + addAll$1(receiver, collection) { + var t1; + A._arrayInstanceType(receiver)._eval$1("Iterable<1>")._as(collection); + if (!!receiver.fixed$length) + A.throwExpression(A.UnsupportedError$("addAll")); + if (Array.isArray(collection)) { + this._addAllFromArray$1(receiver, collection); + return; + } + for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();) + receiver.push(t1.get$current(t1)); + }, + _addAllFromArray$1(receiver, array) { + var len, i; + type$.JSArray_dynamic._as(array); + len = array.length; + if (len === 0) + return; + if (receiver === array) + throw A.wrapException(A.ConcurrentModificationError$(receiver)); + for (i = 0; i < len; ++i) + receiver.push(array[i]); + }, + map$1$1(receiver, f, $T) { + var t1 = A._arrayInstanceType(receiver); + 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>")); + }, + skip$1(receiver, n) { + return A.SubListIterable$(receiver, n, null, A._arrayInstanceType(receiver)._precomputed1); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + toString$0(receiver) { + return A.IterableBase_iterableToFullString(receiver, "[", "]"); + }, + get$iterator(receiver) { + return new J.ArrayIterator(receiver, receiver.length, A._arrayInstanceType(receiver)._eval$1("ArrayIterator<1>")); + }, + get$hashCode(receiver) { + return A.Primitives_objectHashCode(receiver); + }, + get$length(receiver) { + return receiver.length; + }, + set$length(receiver, newLength) { + if (!!receiver.fixed$length) + A.throwExpression(A.UnsupportedError$("set length")); + if (newLength > receiver.length) + A._arrayInstanceType(receiver)._precomputed1._as(null); + receiver.length = newLength; + }, + $index(receiver, index) { + A._asInt(index); + if (!(index >= 0 && index < receiver.length)) + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + A._arrayInstanceType(receiver)._precomputed1._as(value); + if (!!receiver.immutable$list) + A.throwExpression(A.UnsupportedError$("indexed set")); + if (!(index >= 0 && index < receiver.length)) + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + receiver[index] = value; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + J.JSUnmodifiableArray.prototype = {}; + J.ArrayIterator.prototype = { + get$current(_) { + var t1 = this._current; + return t1 == null ? this.$ti._precomputed1._as(t1) : t1; + }, + moveNext$0() { + var t2, _this = this, + t1 = _this._iterable, + $length = t1.length; + if (_this.__interceptors$_length !== $length) + throw A.wrapException(A.throwConcurrentModificationError(t1)); + t2 = _this._index; + if (t2 >= $length) { + _this.set$_current(null); + return false; + } + _this.set$_current(t1[t2]); + ++_this._index; + return true; + }, + set$_current(_current) { + this._current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; + J.JSNumber.prototype = { + toRadixString$1(receiver, radix) { + var result, match, t1, exponent; + if (radix < 2 || radix > 36) + throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", null)); + result = receiver.toString(radix); + if (B.JSString_methods.codeUnitAt$1(result, result.length - 1) !== 41) + return result; + match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result); + if (match == null) + A.throwExpression(A.UnsupportedError$("Unexpected toString result: " + result)); + t1 = match.length; + if (1 >= t1) + return A.ioore(match, 1); + result = match[1]; + if (3 >= t1) + return A.ioore(match, 3); + exponent = +match[3]; + t1 = match[2]; + if (t1 != null) { + result += t1; + exponent -= t1.length; + } + return result + B.JSString_methods.$mul("0", exponent); + }, + toString$0(receiver) { + if (receiver === 0 && 1 / receiver < 0) + return "-0.0"; + else + return "" + receiver; + }, + get$hashCode(receiver) { + var absolute, floorLog2, factor, scaled, + intValue = receiver | 0; + if (receiver === intValue) + return intValue & 536870911; + absolute = Math.abs(receiver); + floorLog2 = Math.log(absolute) / 0.6931471805599453 | 0; + factor = Math.pow(2, floorLog2); + scaled = absolute < 1 ? absolute / factor : factor / absolute; + return ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259 & 536870911; + }, + $mod(receiver, other) { + var result = receiver % other; + if (result === 0) + return 0; + if (result > 0) + return result; + return result + other; + }, + _tdivFast$1(receiver, other) { + return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow$1(receiver, other); + }, + _tdivSlow$1(receiver, other) { + var quotient = receiver / other; + if (quotient >= -2147483648 && quotient <= 2147483647) + return quotient | 0; + if (quotient > 0) { + if (quotient !== 1 / 0) + return Math.floor(quotient); + } else if (quotient > -1 / 0) + return Math.ceil(quotient); + throw A.wrapException(A.UnsupportedError$("Result of truncating division is " + A.S(quotient) + ": " + A.S(receiver) + " ~/ " + other)); + }, + _shrOtherPositive$1(receiver, other) { + var t1; + if (receiver > 0) + t1 = this._shrBothPositive$1(receiver, other); + else { + t1 = other > 31 ? 31 : other; + t1 = receiver >> t1 >>> 0; + } + return t1; + }, + _shrBothPositive$1(receiver, other) { + return other > 31 ? 0 : receiver >>> other; + }, + $isdouble: 1, + $isnum: 1 + }; + J.JSInt.prototype = {$isint: 1}; + J.JSNumNotInt.prototype = {}; + J.JSString.prototype = { + codeUnitAt$1(receiver, index) { + if (index < 0) + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + if (index >= receiver.length) + A.throwExpression(A.diagnoseIndexError(receiver, index)); + return receiver.charCodeAt(index); + }, + _codeUnitAt$1(receiver, index) { + if (index >= receiver.length) + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + return receiver.charCodeAt(index); + }, + $add(receiver, other) { + return receiver + other; + }, + substring$2(receiver, start, end) { + return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length)); + }, + $mul(receiver, times) { + var s, result; + if (0 >= times) + return ""; + if (times === 1 || receiver.length === 0) + return receiver; + if (times !== times >>> 0) + throw A.wrapException(B.C_OutOfMemoryError); + for (s = receiver, result = ""; true;) { + if ((times & 1) === 1) + result = s + result; + times = times >>> 1; + if (times === 0) + break; + s += s; + } + return result; + }, + toString$0(receiver) { + return receiver; + }, + get$hashCode(receiver) { + var t1, hash, i; + for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) { + hash = hash + receiver.charCodeAt(i) & 536870911; + hash = hash + ((hash & 524287) << 10) & 536870911; + hash ^= hash >> 6; + } + hash = hash + ((hash & 67108863) << 3) & 536870911; + hash ^= hash >> 11; + return hash + ((hash & 16383) << 15) & 536870911; + }, + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + if (!(index.$ge(0, 0) && index.$lt(0, receiver.length))) + throw A.wrapException(A.diagnoseIndexError(receiver, index)); + return receiver[index]; + }, + $isJSIndexable: 1, + $isString: 1 + }; + A._CopyingBytesBuilder.prototype = { + add$1(_, bytes) { + var byteCount, required, t1, t2, newSize, x, newBuffer, _this = this; + type$.List_int._as(bytes); + byteCount = bytes.length; + if (byteCount === 0) + return; + required = _this.__internal$_length + byteCount; + t1 = _this._buffer; + t2 = t1.length; + if (t2 < required) { + newSize = required * 2; + if (newSize < 1024) + newSize = 1024; + else { + x = newSize - 1; + x |= B.JSInt_methods._shrOtherPositive$1(x, 1); + x |= x >>> 2; + x |= x >>> 4; + x |= x >>> 8; + newSize = ((x | x >>> 16) >>> 0) + 1; + } + newBuffer = new Uint8Array(newSize); + B.NativeUint8List_methods.setRange$3(newBuffer, 0, t2, t1); + _this._buffer = newBuffer; + t1 = newBuffer; + } + B.NativeUint8List_methods.setRange$3(t1, _this.__internal$_length, required, bytes); + _this.__internal$_length = required; + }, + toBytes$0() { + var t2, + t1 = this.__internal$_length; + if (t1 === 0) + return $.$get$_CopyingBytesBuilder__emptyList(); + t2 = this._buffer; + return new Uint8Array(A._ensureNativeList(A.NativeUint8List_NativeUint8List$view(t2.buffer, t2.byteOffset, t1))); + }, + get$length(_) { + return this.__internal$_length; + } + }; + A.LateError.prototype = { + toString$0(_) { + return "LateInitializationError: " + this._message; + } + }; + A.CodeUnits.prototype = { + get$length(_) { + return this._string.length; + }, + $index(_, i) { + return B.JSString_methods.codeUnitAt$1(this._string, A._asInt(i)); + } + }; + A.SentinelValue.prototype = {}; + A.EfficientLengthIterable.prototype = {}; + A.ListIterable.prototype = { + get$iterator(_) { + var _this = this; + return new A.ListIterator(_this, _this.get$length(_this), A._instanceType(_this)._eval$1("ListIterator")); + }, + map$1$1(_, toElement, $T) { + var t1 = A._instanceType(this); + 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>")); + } + }; + A.SubListIterable.prototype = { + get$_endIndex() { + var $length = J.get$length$asx(this.__internal$_iterable), + endOrLength = this._endOrLength; + if (endOrLength == null || endOrLength > $length) + return $length; + return endOrLength; + }, + get$_startIndex() { + var $length = J.get$length$asx(this.__internal$_iterable), + t1 = this._start; + if (t1 > $length) + return $length; + return t1; + }, + get$length(_) { + var endOrLength, + $length = J.get$length$asx(this.__internal$_iterable), + t1 = this._start; + if (t1 >= $length) + return 0; + endOrLength = this._endOrLength; + if (endOrLength == null || endOrLength >= $length) + return $length - t1; + if (typeof endOrLength !== "number") + return endOrLength.$sub(); + return endOrLength - t1; + }, + elementAt$1(_, index) { + var _this = this, + realIndex = _this.get$_startIndex() + index; + if (index < 0 || realIndex >= _this.get$_endIndex()) + throw A.wrapException(A.IndexError$withLength(index, _this.get$length(_this), _this, "index")); + return J.elementAt$1$ax(_this.__internal$_iterable, realIndex); + }, + toList$1$growable(_, growable) { + var $length, result, i, _this = this, + start = _this._start, + t1 = _this.__internal$_iterable, + t2 = J.getInterceptor$asx(t1), + end = t2.get$length(t1), + endOrLength = _this._endOrLength; + if (endOrLength != null && endOrLength < end) + end = endOrLength; + $length = end - start; + if ($length <= 0) { + t1 = J.JSArray_JSArray$fixed(0, _this.$ti._precomputed1); + return t1; + } + result = A.List_List$filled($length, t2.elementAt$1(t1, start), false, _this.$ti._precomputed1); + for (i = 1; i < $length; ++i) { + B.JSArray_methods.$indexSet(result, i, t2.elementAt$1(t1, start + i)); + if (t2.get$length(t1) < end) + throw A.wrapException(A.ConcurrentModificationError$(_this)); + } + return result; + } + }; + A.ListIterator.prototype = { + get$current(_) { + var t1 = this.__internal$_current; + return t1 == null ? this.$ti._precomputed1._as(t1) : t1; + }, + moveNext$0() { + var t3, _this = this, + t1 = _this.__internal$_iterable, + t2 = J.getInterceptor$asx(t1), + $length = t2.get$length(t1); + if (_this.__internal$_length !== $length) + throw A.wrapException(A.ConcurrentModificationError$(t1)); + t3 = _this.__internal$_index; + if (t3 >= $length) { + _this.set$__internal$_current(null); + return false; + } + _this.set$__internal$_current(t2.elementAt$1(t1, t3)); + ++_this.__internal$_index; + return true; + }, + set$__internal$_current(_current) { + this.__internal$_current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; + A.MappedIterable.prototype = { + get$iterator(_) { + var t1 = this.__internal$_iterable, + t2 = A._instanceType(this); + return new A.MappedIterator(t1.get$iterator(t1), this._f, t2._eval$1("@<1>")._bind$1(t2._rest[1])._eval$1("MappedIterator<1,2>")); + }, + get$length(_) { + var t1 = this.__internal$_iterable; + return t1.get$length(t1); + } + }; + A.EfficientLengthMappedIterable.prototype = {$isEfficientLengthIterable: 1}; + A.MappedIterator.prototype = { + moveNext$0() { + var _this = this, + t1 = _this._iterator; + if (t1.moveNext$0()) { + _this.set$__internal$_current(_this._f.call$1(t1.get$current(t1))); + return true; + } + _this.set$__internal$_current(null); + return false; + }, + get$current(_) { + var t1 = this.__internal$_current; + return t1 == null ? this.$ti._rest[1]._as(t1) : t1; + }, + set$__internal$_current(_current) { + this.__internal$_current = this.$ti._eval$1("2?")._as(_current); + } + }; + A.MappedListIterable.prototype = { + get$length(_) { + return J.get$length$asx(this._source); + }, + elementAt$1(_, index) { + return this._f.call$1(J.elementAt$1$ax(this._source, index)); + } + }; + A.WhereIterable.prototype = { + get$iterator(_) { + return new A.WhereIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, this.$ti._eval$1("WhereIterator<1>")); + }, + map$1$1(_, toElement, $T) { + var t1 = this.$ti; + 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>")); + } + }; + A.WhereIterator.prototype = { + moveNext$0() { + var t1, t2; + for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();) + if (A.boolConversionCheck(t2.call$1(t1.get$current(t1)))) + return true; + return false; + }, + get$current(_) { + var t1 = this._iterator; + return t1.get$current(t1); + } + }; + A.FixedLengthListMixin.prototype = {}; + A.UnmodifiableListMixin.prototype = { + $indexSet(_, index, value) { + A._instanceType(this)._eval$1("UnmodifiableListMixin.E")._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list")); + } + }; + A.UnmodifiableListBase.prototype = {}; + A.Symbol.prototype = { + get$hashCode(_) { + var hash = this._hashCode; + if (hash != null) + return hash; + hash = 664597 * J.get$hashCode$(this.__internal$_name) & 536870911; + this._hashCode = hash; + return hash; + }, + toString$0(_) { + return 'Symbol("' + A.S(this.__internal$_name) + '")'; + }, + $eq(_, other) { + if (other == null) + return false; + return other instanceof A.Symbol && this.__internal$_name == other.__internal$_name; + }, + $isSymbol0: 1 + }; + A.ConstantMapView.prototype = {}; + A.ConstantMap.prototype = { + toString$0(_) { + return A.MapBase_mapToString(this); + }, + $isMap: 1 + }; + A.ConstantStringMap.prototype = { + get$length(_) { + return this._length; + }, + containsKey$1(_, key) { + if (typeof key != "string") + return false; + if ("__proto__" === key) + return false; + return this._jsObject.hasOwnProperty(key); + }, + $index(_, key) { + if (!this.containsKey$1(0, key)) + return null; + return this._jsObject[A._asString(key)]; + }, + forEach$1(_, f) { + var keys, t2, t3, i, t4, + t1 = this.$ti; + t1._eval$1("~(1,2)")._as(f); + keys = this.__js_helper$_keys; + for (t2 = keys.length, t3 = this._jsObject, t1 = t1._rest[1], i = 0; i < t2; ++i) { + t4 = A._asString(keys[i]); + f.call$2(t4, t1._as(t3[t4])); + } + }, + get$keys(_) { + return new A._ConstantMapKeyIterable(this, this.$ti._eval$1("_ConstantMapKeyIterable<1>")); + } + }; + A._ConstantMapKeyIterable.prototype = { + get$iterator(_) { + var t1 = this._map.__js_helper$_keys; + return new J.ArrayIterator(t1, t1.length, A._arrayInstanceType(t1)._eval$1("ArrayIterator<1>")); + }, + get$length(_) { + return this._map.__js_helper$_keys.length; + } + }; + A.JSInvocationMirror.prototype = { + get$memberName() { + var t1 = this._memberName; + return t1; + }, + get$positionalArguments() { + var t1, argumentCount, list, index, _this = this; + if (_this.__js_helper$_kind === 1) + return B.List_empty; + t1 = _this._arguments; + argumentCount = t1.length - _this._namedArgumentNames.length - _this._typeArgumentCount; + if (argumentCount === 0) + return B.List_empty; + list = []; + for (index = 0; index < argumentCount; ++index) { + if (!(index < t1.length)) + return A.ioore(t1, index); + list.push(t1[index]); + } + list.fixed$length = Array; + list.immutable$list = Array; + return list; + }, + get$namedArguments() { + var t1, namedArgumentCount, t2, namedArgumentsStartIndex, map, i, t3, t4, _this = this; + if (_this.__js_helper$_kind !== 0) + return B.Map_empty; + t1 = _this._namedArgumentNames; + namedArgumentCount = t1.length; + t2 = _this._arguments; + namedArgumentsStartIndex = t2.length - namedArgumentCount - _this._typeArgumentCount; + if (namedArgumentCount === 0) + return B.Map_empty; + map = new A.JsLinkedHashMap(type$.JsLinkedHashMap_Symbol_dynamic); + for (i = 0; i < namedArgumentCount; ++i) { + if (!(i < t1.length)) + return A.ioore(t1, i); + t3 = t1[i]; + t4 = namedArgumentsStartIndex + i; + if (!(t4 >= 0 && t4 < t2.length)) + return A.ioore(t2, t4); + map.$indexSet(0, new A.Symbol(t3), t2[t4]); + } + return new A.ConstantMapView(map, type$.ConstantMapView_Symbol_dynamic); + }, + $isInvocation: 1 + }; + A.Primitives_functionNoSuchMethod_closure.prototype = { + call$2($name, argument) { + var t1; + A._asString($name); + t1 = this._box_0; + t1.names = t1.names + "$" + $name; + B.JSArray_methods.add$1(this.namedArgumentList, $name); + B.JSArray_methods.add$1(this.$arguments, argument); + ++t1.argumentCount; + }, + $signature: 2 + }; + A.TypeErrorDecoder.prototype = { + matchTypeError$1(message) { + var result, t1, _this = this, + match = new RegExp(_this._pattern).exec(message); + if (match == null) + return null; + result = Object.create(null); + t1 = _this._arguments; + if (t1 !== -1) + result.arguments = match[t1 + 1]; + t1 = _this._argumentsExpr; + if (t1 !== -1) + result.argumentsExpr = match[t1 + 1]; + t1 = _this._expr; + if (t1 !== -1) + result.expr = match[t1 + 1]; + t1 = _this._method; + if (t1 !== -1) + result.method = match[t1 + 1]; + t1 = _this._receiver; + if (t1 !== -1) + result.receiver = match[t1 + 1]; + return result; + } + }; + A.NullError.prototype = { + toString$0(_) { + var t1 = this._method; + if (t1 == null) + return "NoSuchMethodError: " + this.__js_helper$_message; + return "NoSuchMethodError: method not found: '" + t1 + "' on null"; + } + }; + A.JsNoSuchMethodError.prototype = { + toString$0(_) { + var t2, _this = this, + _s38_ = "NoSuchMethodError: method not found: '", + t1 = _this._method; + if (t1 == null) + return "NoSuchMethodError: " + _this.__js_helper$_message; + t2 = _this._receiver; + if (t2 == null) + return _s38_ + t1 + "' (" + _this.__js_helper$_message + ")"; + return _s38_ + t1 + "' on '" + t2 + "' (" + _this.__js_helper$_message + ")"; + } + }; + A.UnknownJsTypeError.prototype = { + toString$0(_) { + var t1 = this.__js_helper$_message; + return t1.length === 0 ? "Error" : "Error: " + t1; + } + }; + A.NullThrownFromJavaScriptException.prototype = { + toString$0(_) { + return "Throw of null ('" + (this._irritant === null ? "null" : "undefined") + "' from JavaScript)"; + } + }; + A.ExceptionAndStackTrace.prototype = {}; + A._StackTrace.prototype = { + toString$0(_) { + var trace, + t1 = this._trace; + if (t1 != null) + return t1; + t1 = this._exception; + trace = t1 !== null && typeof t1 === "object" ? t1.stack : null; + return this._trace = trace == null ? "" : trace; + }, + $isStackTrace: 1 + }; + A.Closure.prototype = { + toString$0(_) { + var $constructor = this.constructor, + $name = $constructor == null ? null : $constructor.name; + return "Closure '" + A.unminifyOrTag($name == null ? "unknown" : $name) + "'"; + }, + $isFunction: 1, + get$$call() { + return this; + }, + "call*": "call$1", + $requiredArgCount: 1, + $defaultValues: null + }; + A.Closure0Args.prototype = {"call*": "call$0", $requiredArgCount: 0}; + A.Closure2Args.prototype = {"call*": "call$2", $requiredArgCount: 2}; + A.TearOffClosure.prototype = {}; + A.StaticClosure.prototype = { + toString$0(_) { + var $name = this.$static_name; + if ($name == null) + return "Closure of unknown static method"; + return "Closure '" + A.unminifyOrTag($name) + "'"; + } + }; + A.BoundClosure.prototype = { + $eq(_, other) { + if (other == null) + return false; + if (this === other) + return true; + if (!(other instanceof A.BoundClosure)) + return false; + return this.$_target === other.$_target && this._receiver === other._receiver; + }, + get$hashCode(_) { + return (A.objectHashCode(this._receiver) ^ A.Primitives_objectHashCode(this.$_target)) >>> 0; + }, + toString$0(_) { + return "Closure '" + this.$_name + "' of " + ("Instance of '" + A.Primitives_objectTypeName(this._receiver) + "'"); + } + }; + A.RuntimeError.prototype = { + toString$0(_) { + return "RuntimeError: " + this.message; + } + }; + A._AssertionError.prototype = { + toString$0(_) { + return "Assertion failed: " + A.Error_safeToString(this.message); + } + }; + A._Required.prototype = {}; + A.JsLinkedHashMap.prototype = { + get$length(_) { + return this._length; + }, + get$keys(_) { + return new A.LinkedHashMapKeyIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>")); + }, + containsKey$1(_, key) { + var strings = this._strings; + if (strings == null) + return false; + return strings[key] != null; + }, + $index(_, key) { + var strings, cell, t1, nums, _null = null; + if (typeof key == "string") { + strings = this._strings; + if (strings == null) + return _null; + cell = strings[key]; + t1 = cell == null ? _null : cell.hashMapCellValue; + return t1; + } else if (typeof key == "number" && (key & 0x3fffffff) === key) { + nums = this._nums; + if (nums == null) + return _null; + cell = nums[key]; + t1 = cell == null ? _null : cell.hashMapCellValue; + return t1; + } else + return this.internalGet$1(key); + }, + internalGet$1(key) { + var bucket, index, + rest = this.__js_helper$_rest; + if (rest == null) + return null; + bucket = rest[this.internalComputeHashCode$1(key)]; + index = this.internalFindBucketIndex$2(bucket, key); + if (index < 0) + return null; + return bucket[index].hashMapCellValue; + }, + $indexSet(_, key, value) { + var strings, nums, _this = this, + t1 = A._instanceType(_this); + t1._precomputed1._as(key); + t1._rest[1]._as(value); + if (typeof key == "string") { + strings = _this._strings; + _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value); + } else if (typeof key == "number" && (key & 0x3fffffff) === key) { + nums = _this._nums; + _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value); + } else + _this.internalSet$2(key, value); + }, + internalSet$2(key, value) { + var rest, hash, bucket, index, _this = this, + t1 = A._instanceType(_this); + t1._precomputed1._as(key); + t1._rest[1]._as(value); + rest = _this.__js_helper$_rest; + if (rest == null) + rest = _this.__js_helper$_rest = _this._newHashTable$0(); + hash = _this.internalComputeHashCode$1(key); + bucket = rest[hash]; + if (bucket == null) + rest[hash] = [_this._newLinkedCell$2(key, value)]; + else { + index = _this.internalFindBucketIndex$2(bucket, key); + if (index >= 0) + bucket[index].hashMapCellValue = value; + else + bucket.push(_this._newLinkedCell$2(key, value)); + } + }, + forEach$1(_, action) { + var cell, modifications, _this = this; + A._instanceType(_this)._eval$1("~(1,2)")._as(action); + cell = _this._first; + modifications = _this._modifications; + for (; cell != null;) { + action.call$2(cell.hashMapCellKey, cell.hashMapCellValue); + if (modifications !== _this._modifications) + throw A.wrapException(A.ConcurrentModificationError$(_this)); + cell = cell._next; + } + }, + _addHashTableEntry$3(table, key, value) { + var cell, + t1 = A._instanceType(this); + t1._precomputed1._as(key); + t1._rest[1]._as(value); + cell = table[key]; + if (cell == null) + table[key] = this._newLinkedCell$2(key, value); + else + cell.hashMapCellValue = value; + }, + _newLinkedCell$2(key, value) { + var _this = this, + t1 = A._instanceType(_this), + cell = new A.LinkedHashMapCell(t1._precomputed1._as(key), t1._rest[1]._as(value)); + if (_this._first == null) + _this._first = _this._last = cell; + else + _this._last = _this._last._next = cell; + ++_this._length; + _this._modifications = _this._modifications + 1 & 1073741823; + return cell; + }, + internalComputeHashCode$1(key) { + return J.get$hashCode$(key) & 0x3fffffff; + }, + internalFindBucketIndex$2(bucket, key) { + var $length, i; + if (bucket == null) + return -1; + $length = bucket.length; + for (i = 0; i < $length; ++i) + if (J.$eq$(bucket[i].hashMapCellKey, key)) + return i; + return -1; + }, + toString$0(_) { + return A.MapBase_mapToString(this); + }, + _newHashTable$0() { + var table = Object.create(null); + table[""] = table; + delete table[""]; + return table; + }, + $isLinkedHashMap: 1 + }; + A.LinkedHashMapCell.prototype = {}; + A.LinkedHashMapKeyIterable.prototype = { + get$length(_) { + return this._map._length; + }, + get$iterator(_) { + var t1 = this._map, + t2 = new A.LinkedHashMapKeyIterator(t1, t1._modifications, this.$ti._eval$1("LinkedHashMapKeyIterator<1>")); + t2._cell = t1._first; + return t2; + } + }; + A.LinkedHashMapKeyIterator.prototype = { + get$current(_) { + return this.__js_helper$_current; + }, + moveNext$0() { + var cell, _this = this, + t1 = _this._map; + if (_this._modifications !== t1._modifications) + throw A.wrapException(A.ConcurrentModificationError$(t1)); + cell = _this._cell; + if (cell == null) { + _this.set$__js_helper$_current(null); + return false; + } else { + _this.set$__js_helper$_current(cell.hashMapCellKey); + _this._cell = cell._next; + return true; + } + }, + set$__js_helper$_current(_current) { + this.__js_helper$_current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; + A.initHooks_closure.prototype = { + call$1(o) { + return this.getTag(o); + }, + $signature: 8 + }; + A.initHooks_closure0.prototype = { + call$2(o, tag) { + return this.getUnknownTag(o, tag); + }, + $signature: 9 + }; + A.initHooks_closure1.prototype = { + call$1(tag) { + return this.prototypeForTag(A._asString(tag)); + }, + $signature: 10 + }; + A.NativeByteBuffer.prototype = {$isNativeByteBuffer: 1, $isByteBuffer: 1}; + A.NativeTypedData.prototype = { + _invalidPosition$3(receiver, position, $length, $name) { + var t1 = A.RangeError$range(position, 0, $length, $name, null); + throw A.wrapException(t1); + }, + _checkPosition$3(receiver, position, $length, $name) { + if (position >>> 0 !== position || position > $length) + this._invalidPosition$3(receiver, position, $length, $name); + }, + $isNativeTypedData: 1 + }; + A.NativeByteData.prototype = { + _getUint32$2(receiver, byteOffset, littleEndian) { + return receiver.getUint32(byteOffset, littleEndian); + }, + setInt8$2(receiver, byteOffset, value) { + return receiver.setInt8(byteOffset, value); + }, + _setUint32$3(receiver, byteOffset, value, littleEndian) { + return receiver.setUint32(byteOffset, value, littleEndian); + }, + $isByteData: 1 + }; + A.NativeTypedArray.prototype = { + get$length(receiver) { + return receiver.length; + }, + _setRangeFast$4(receiver, start, end, source, skipCount) { + var count, sourceLength, + targetLength = receiver.length; + this._checkPosition$3(receiver, start, targetLength, "start"); + this._checkPosition$3(receiver, end, targetLength, "end"); + if (start > end) + throw A.wrapException(A.RangeError$range(start, 0, end, null, null)); + count = end - start; + sourceLength = source.length; + if (sourceLength - skipCount < count) + throw A.wrapException(A.StateError$("Not enough elements")); + if (skipCount !== 0 || sourceLength !== count) + source = source.subarray(skipCount, skipCount + count); + receiver.set(source, start); + }, + $isJSIndexable: 1, + $isJavaScriptIndexingBehavior: 1 + }; + A.NativeTypedArrayOfDouble.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + A._asDouble(value); + A._checkValidIndex(index, receiver, receiver.length); + receiver[index] = value; + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A.NativeTypedArrayOfInt.prototype = { + $indexSet(receiver, index, value) { + A._asInt(value); + A._checkValidIndex(index, receiver, receiver.length); + receiver[index] = value; + }, + setRange$3(receiver, start, end, iterable) { + type$.Iterable_int._as(iterable); + if (type$.NativeTypedArrayOfInt._is(iterable)) { + this._setRangeFast$4(receiver, start, end, iterable, 0); + return; + } + this.super$ListMixin$setRange(receiver, start, end, iterable, 0); + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A.NativeInt16List.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeInt32List.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeInt8List.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeUint16List.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeUint32List.prototype = { + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeUint8ClampedList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + } + }; + A.NativeUint8List.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + A._checkValidIndex(index, receiver, receiver.length); + return receiver[index]; + }, + sublist$2(receiver, start, end) { + return new Uint8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length))); + }, + sublist$1($receiver, start) { + return this.sublist$2($receiver, start, null); + }, + $isUint8List: 1 + }; + A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {}; + A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {}; + A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {}; + A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {}; + A.Rti.prototype = { + _eval$1(recipe) { + return A._Universe_evalInEnvironment(init.typeUniverse, this, recipe); + }, + _bind$1(typeOrTuple) { + return A._Universe_bind(init.typeUniverse, this, typeOrTuple); + } + }; + A._FunctionParameters.prototype = {}; + A._Type.prototype = { + toString$0(_) { + return A._rtiToString(this._rti, null); + } + }; + A._Error.prototype = { + toString$0(_) { + return this.__rti$_message; + } + }; + A._TypeError.prototype = {$isTypeError: 1}; + A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = { + call$1(_) { + var t1 = this._box_0, + f = t1.storedCallback; + t1.storedCallback = null; + f.call$0(); + }, + $signature: 3 + }; + A._AsyncRun__initializeScheduleImmediate_closure.prototype = { + call$1(callback) { + var t1, t2; + this._box_0.storedCallback = type$.void_Function._as(callback); + t1 = this.div; + t2 = this.span; + t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2); + }, + $signature: 11 + }; + A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = { + call$0() { + this.callback.call$0(); + }, + $signature: 6 + }; + A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = { + call$0() { + this.callback.call$0(); + }, + $signature: 6 + }; + A._TimerImpl.prototype = { + _TimerImpl$2(milliseconds, callback) { + if (self.setTimeout != null) + self.setTimeout(A.convertDartClosureToJS(new A._TimerImpl_internalCallback(this, callback), 0), milliseconds); + else + throw A.wrapException(A.UnsupportedError$("`setTimeout()` not found.")); + } + }; + A._TimerImpl_internalCallback.prototype = { + call$0() { + this.callback.call$0(); + }, + $signature: 0 + }; + A._AsyncAwaitCompleter.prototype = { + complete$1(_, value) { + var t2, _this = this, + t1 = _this.$ti; + t1._eval$1("1/?")._as(value); + if (value == null) + t1._precomputed1._as(value); + if (!_this.isSync) + _this._future._asyncComplete$1(value); + else { + t2 = _this._future; + if (t1._eval$1("Future<1>")._is(value)) + t2._chainFuture$1(value); + else + t2._completeWithValue$1(t1._precomputed1._as(value)); + } + }, + completeError$2(e, st) { + var t1 = this._future; + if (this.isSync) + t1._completeError$2(e, st); + else + t1._asyncCompleteError$2(e, st); + }, + $isCompleter: 1 + }; + A._awaitOnObject_closure.prototype = { + call$1(result) { + return this.bodyFunction.call$2(0, result); + }, + $signature: 4 + }; + A._awaitOnObject_closure0.prototype = { + call$2(error, stackTrace) { + this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, type$.StackTrace._as(stackTrace))); + }, + $signature: 12 + }; + A._wrapJsFunctionForAsync_closure.prototype = { + call$2(errorCode, result) { + this.$protected(A._asInt(errorCode), result); + }, + $signature: 13 + }; + A.AsyncError.prototype = { + toString$0(_) { + return A.S(this.error); + }, + $isError: 1, + get$stackTrace() { + return this.stackTrace; + } + }; + A._Completer.prototype = { + completeError$2(error, stackTrace) { + var t1; + A.checkNotNullable(error, "error", type$.Object); + t1 = this.future; + if ((t1._state & 30) !== 0) + throw A.wrapException(A.StateError$("Future already completed")); + if (stackTrace == null) + stackTrace = A.AsyncError_defaultStackTrace(error); + t1._asyncCompleteError$2(error, stackTrace); + }, + completeError$1(error) { + return this.completeError$2(error, null); + }, + $isCompleter: 1 + }; + A._AsyncCompleter.prototype = { + complete$1(_, value) { + var t2, + t1 = this.$ti; + t1._eval$1("1/?")._as(value); + t2 = this.future; + if ((t2._state & 30) !== 0) + throw A.wrapException(A.StateError$("Future already completed")); + t2._asyncComplete$1(t1._eval$1("1/")._as(value)); + }, + complete$0($receiver) { + return this.complete$1($receiver, null); + } + }; + A._FutureListener.prototype = { + matchesErrorTest$1(asyncError) { + if ((this.state & 15) !== 6) + return true; + return this.result._zone.runUnary$2$2(type$.bool_Function_Object._as(this.callback), asyncError.error, type$.bool, type$.Object); + }, + handleError$1(asyncError) { + var exception, _this = this, + errorCallback = _this.errorCallback, + result = null, + t1 = type$.dynamic, + t2 = type$.Object, + t3 = asyncError.error, + t4 = _this.result._zone; + if (type$.dynamic_Function_Object_StackTrace._is(errorCallback)) + result = t4.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace); + else + result = t4.runUnary$2$2(type$.dynamic_Function_Object._as(errorCallback), t3, t1, t2); + try { + t1 = _this.$ti._eval$1("2/")._as(result); + return t1; + } catch (exception) { + if (type$.TypeError._is(A.unwrapException(exception))) { + if ((_this.state & 1) !== 0) + throw A.wrapException(A.ArgumentError$("The error handler of Future.then must return a value of the returned future's type", "onError")); + throw A.wrapException(A.ArgumentError$("The error handler of Future.catchError must return a value of the future's type", "onError")); + } else + throw exception; + } + } + }; + A._Future.prototype = { + then$1$2$onError(f, onError, $R) { + var currentZone, result, t2, + t1 = this.$ti; + t1._bind$1($R)._eval$1("1/(2)")._as(f); + currentZone = $.Zone__current; + if (currentZone === B.C__RootZone) { + if (onError != null && !type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError)) + throw A.wrapException(A.ArgumentError$value(onError, "onError", string$.Error_)); + } else { + $R._eval$1("@<0/>")._bind$1(t1._precomputed1)._eval$1("1(2)")._as(f); + if (onError != null) + onError = A._registerErrorHandler(onError, currentZone); + } + result = new A._Future(currentZone, $R._eval$1("_Future<0>")); + t2 = onError == null ? 1 : 3; + this._addListener$1(new A._FutureListener(result, t2, f, onError, t1._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>"))); + return result; + }, + then$1$1(f, $R) { + return this.then$1$2$onError(f, null, $R); + }, + _thenAwait$1$2(f, onError, $E) { + var result, + t1 = this.$ti; + t1._bind$1($E)._eval$1("1/(2)")._as(f); + result = new A._Future($.Zone__current, $E._eval$1("_Future<0>")); + this._addListener$1(new A._FutureListener(result, 3, f, onError, t1._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>"))); + return result; + }, + _setErrorObject$1(error) { + this._state = this._state & 1 | 16; + this._resultOrListeners = error; + }, + _cloneResult$1(source) { + this._state = source._state & 30 | this._state & 1; + this._resultOrListeners = source._resultOrListeners; + }, + _addListener$1(listener) { + var source, _this = this, + t1 = _this._state; + if (t1 <= 3) { + listener._nextListener = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners); + _this._resultOrListeners = listener; + } else { + if ((t1 & 4) !== 0) { + source = type$._Future_dynamic._as(_this._resultOrListeners); + if ((source._state & 24) === 0) { + source._addListener$1(listener); + return; + } + _this._cloneResult$1(source); + } + A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__addListener_closure(_this, listener))); + } + }, + _prependListeners$1(listeners) { + var t1, existingListeners, next, cursor, next0, source, _this = this, _box_0 = {}; + _box_0.listeners = listeners; + if (listeners == null) + return; + t1 = _this._state; + if (t1 <= 3) { + existingListeners = type$.nullable__FutureListener_dynamic_dynamic._as(_this._resultOrListeners); + _this._resultOrListeners = listeners; + if (existingListeners != null) { + next = listeners._nextListener; + for (cursor = listeners; next != null; cursor = next, next = next0) + next0 = next._nextListener; + cursor._nextListener = existingListeners; + } + } else { + if ((t1 & 4) !== 0) { + source = type$._Future_dynamic._as(_this._resultOrListeners); + if ((source._state & 24) === 0) { + source._prependListeners$1(listeners); + return; + } + _this._cloneResult$1(source); + } + _box_0.listeners = _this._reverseListeners$1(listeners); + A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__prependListeners_closure(_box_0, _this))); + } + }, + _removeListeners$0() { + var current = type$.nullable__FutureListener_dynamic_dynamic._as(this._resultOrListeners); + this._resultOrListeners = null; + return this._reverseListeners$1(current); + }, + _reverseListeners$1(listeners) { + var current, prev, next; + for (current = listeners, prev = null; current != null; prev = current, current = next) { + next = current._nextListener; + current._nextListener = prev; + } + return prev; + }, + _chainForeignFuture$1(source) { + var e, s, exception, _this = this; + _this._state ^= 2; + try { + source.then$1$2$onError(new A._Future__chainForeignFuture_closure(_this), new A._Future__chainForeignFuture_closure0(_this), type$.Null); + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + A.scheduleMicrotask(new A._Future__chainForeignFuture_closure1(_this, e, s)); + } + }, + _completeWithValue$1(value) { + var listeners, _this = this; + _this.$ti._precomputed1._as(value); + listeners = _this._removeListeners$0(); + _this._state = 8; + _this._resultOrListeners = value; + A._Future__propagateToListeners(_this, listeners); + }, + _completeError$2(error, stackTrace) { + var listeners; + type$.StackTrace._as(stackTrace); + listeners = this._removeListeners$0(); + this._setErrorObject$1(A.AsyncError$(error, stackTrace)); + A._Future__propagateToListeners(this, listeners); + }, + _asyncComplete$1(value) { + var t1 = this.$ti; + t1._eval$1("1/")._as(value); + if (t1._eval$1("Future<1>")._is(value)) { + this._chainFuture$1(value); + return; + } + this._asyncCompleteWithValue$1(t1._precomputed1._as(value)); + }, + _asyncCompleteWithValue$1(value) { + var _this = this; + _this.$ti._precomputed1._as(value); + _this._state ^= 2; + A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__asyncCompleteWithValue_closure(_this, value))); + }, + _chainFuture$1(value) { + var _this = this, + t1 = _this.$ti; + t1._eval$1("Future<1>")._as(value); + if (t1._is(value)) { + if ((value._state & 16) !== 0) { + _this._state ^= 2; + A._rootScheduleMicrotask(null, null, _this._zone, type$.void_Function._as(new A._Future__chainFuture_closure(_this, value))); + } else + A._Future__chainCoreFuture(value, _this); + return; + } + _this._chainForeignFuture$1(value); + }, + _asyncCompleteError$2(error, stackTrace) { + this._state ^= 2; + A._rootScheduleMicrotask(null, null, this._zone, type$.void_Function._as(new A._Future__asyncCompleteError_closure(this, error, stackTrace))); + }, + $isFuture: 1 + }; + A._Future__addListener_closure.prototype = { + call$0() { + A._Future__propagateToListeners(this.$this, this.listener); + }, + $signature: 0 + }; + A._Future__prependListeners_closure.prototype = { + call$0() { + A._Future__propagateToListeners(this.$this, this._box_0.listeners); + }, + $signature: 0 + }; + A._Future__chainForeignFuture_closure.prototype = { + call$1(value) { + var error, stackTrace, exception, + t1 = this.$this; + t1._state ^= 2; + try { + t1._completeWithValue$1(t1.$ti._precomputed1._as(value)); + } catch (exception) { + error = A.unwrapException(exception); + stackTrace = A.getTraceFromException(exception); + t1._completeError$2(error, stackTrace); + } + }, + $signature: 3 + }; + A._Future__chainForeignFuture_closure0.prototype = { + call$2(error, stackTrace) { + this.$this._completeError$2(type$.Object._as(error), type$.StackTrace._as(stackTrace)); + }, + $signature: 14 + }; + A._Future__chainForeignFuture_closure1.prototype = { + call$0() { + this.$this._completeError$2(this.e, this.s); + }, + $signature: 0 + }; + A._Future__asyncCompleteWithValue_closure.prototype = { + call$0() { + this.$this._completeWithValue$1(this.value); + }, + $signature: 0 + }; + A._Future__chainFuture_closure.prototype = { + call$0() { + A._Future__chainCoreFuture(this.value, this.$this); + }, + $signature: 0 + }; + A._Future__asyncCompleteError_closure.prototype = { + call$0() { + this.$this._completeError$2(this.error, this.stackTrace); + }, + $signature: 0 + }; + A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = { + call$0() { + var e, s, t1, exception, t2, originalSource, _this = this, completeResult = null; + try { + t1 = _this._box_0.listener; + completeResult = t1.result._zone.run$1$1(type$.dynamic_Function._as(t1.callback), type$.dynamic); + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + t1 = _this.hasError && type$.AsyncError._as(_this._box_1.source._resultOrListeners).error === e; + t2 = _this._box_0; + if (t1) + t2.listenerValueOrError = type$.AsyncError._as(_this._box_1.source._resultOrListeners); + else + t2.listenerValueOrError = A.AsyncError$(e, s); + t2.listenerHasError = true; + return; + } + if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) { + if ((completeResult._state & 16) !== 0) { + t1 = _this._box_0; + t1.listenerValueOrError = type$.AsyncError._as(completeResult._resultOrListeners); + t1.listenerHasError = true; + } + return; + } + if (type$.Future_dynamic._is(completeResult)) { + originalSource = _this._box_1.source; + t1 = _this._box_0; + t1.listenerValueOrError = completeResult.then$1$1(new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), type$.dynamic); + t1.listenerHasError = false; + } + }, + $signature: 0 + }; + A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = { + call$1(_) { + return this.originalSource; + }, + $signature: 15 + }; + A._Future__propagateToListeners_handleValueCallback.prototype = { + call$0() { + var e, s, t1, t2, t3, t4, t5, exception; + try { + t1 = this._box_0; + t2 = t1.listener; + t3 = t2.$ti; + t4 = t3._precomputed1; + t5 = t4._as(this.sourceResult); + t1.listenerValueOrError = t2.result._zone.runUnary$2$2(t3._eval$1("2/(1)")._as(t2.callback), t5, t3._eval$1("2/"), t4); + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + t1 = this._box_0; + t1.listenerValueOrError = A.AsyncError$(e, s); + t1.listenerHasError = true; + } + }, + $signature: 0 + }; + A._Future__propagateToListeners_handleError.prototype = { + call$0() { + var asyncError, e, s, t1, exception, t2, _this = this; + try { + asyncError = type$.AsyncError._as(_this._box_1.source._resultOrListeners); + t1 = _this._box_0; + if (t1.listener.matchesErrorTest$1(asyncError) && t1.listener.errorCallback != null) { + t1.listenerValueOrError = t1.listener.handleError$1(asyncError); + t1.listenerHasError = false; + } + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + t1 = type$.AsyncError._as(_this._box_1.source._resultOrListeners); + t2 = _this._box_0; + if (t1.error === e) + t2.listenerValueOrError = t1; + else + t2.listenerValueOrError = A.AsyncError$(e, s); + t2.listenerHasError = true; + } + }, + $signature: 0 + }; + A._AsyncCallbackEntry.prototype = {}; + A.Stream.prototype = { + get$length(_) { + var t2, t3, _this = this, t1 = {}, + future = new A._Future($.Zone__current, type$._Future_int); + t1.count = 0; + t2 = _this.$ti; + t3 = t2._eval$1("~(1)?")._as(new A.Stream_length_closure(t1, _this)); + type$.nullable_void_Function._as(new A.Stream_length_closure0(t1, future)); + A._EventStreamSubscription$(_this._target, _this._eventType, t3, false, t2._precomputed1); + return future; + } + }; + A.Stream_length_closure.prototype = { + call$1(_) { + this.$this.$ti._precomputed1._as(_); + ++this._box_0.count; + }, + $signature() { + return this.$this.$ti._eval$1("~(1)"); + } + }; + A.Stream_length_closure0.prototype = { + call$0() { + var t1 = this.future, + t2 = t1.$ti, + t3 = t2._eval$1("1/")._as(this._box_0.count), + listeners = t1._removeListeners$0(); + t2._precomputed1._as(t3); + t1._state = 8; + t1._resultOrListeners = t3; + A._Future__propagateToListeners(t1, listeners); + }, + $signature: 0 + }; + A.StreamSubscription.prototype = {}; + A.StreamTransformerBase.prototype = {}; + A._StreamIterator.prototype = {}; + A._Zone.prototype = {$isZone: 1}; + A._rootHandleError_closure.prototype = { + call$0() { + var t1 = this.error, + t2 = this.stackTrace; + A.checkNotNullable(t1, "error", type$.Object); + A.checkNotNullable(t2, "stackTrace", type$.StackTrace); + A.Error__throw(t1, t2); + }, + $signature: 0 + }; + A._RootZone.prototype = { + runGuarded$1(f) { + var e, s, exception; + type$.void_Function._as(f); + try { + if (B.C__RootZone === $.Zone__current) { + f.call$0(); + return; + } + A._rootRun(null, null, this, f, type$.void); + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + A._rootHandleError(type$.Object._as(e), type$.StackTrace._as(s)); + } + }, + runUnaryGuarded$1$2(f, arg, $T) { + var e, s, exception; + $T._eval$1("~(0)")._as(f); + $T._as(arg); + try { + if (B.C__RootZone === $.Zone__current) { + f.call$1(arg); + return; + } + A._rootRunUnary(null, null, this, f, arg, type$.void, $T); + } catch (exception) { + e = A.unwrapException(exception); + s = A.getTraceFromException(exception); + A._rootHandleError(type$.Object._as(e), type$.StackTrace._as(s)); + } + }, + bindCallbackGuarded$1(f) { + return new A._RootZone_bindCallbackGuarded_closure(this, type$.void_Function._as(f)); + }, + bindUnaryCallbackGuarded$1$1(f, $T) { + return new A._RootZone_bindUnaryCallbackGuarded_closure(this, $T._eval$1("~(0)")._as(f), $T); + }, + $index(_, key) { + return null; + }, + run$1$1(f, $R) { + $R._eval$1("0()")._as(f); + if ($.Zone__current === B.C__RootZone) + return f.call$0(); + return A._rootRun(null, null, this, f, $R); + }, + runUnary$2$2(f, arg, $R, $T) { + $R._eval$1("@<0>")._bind$1($T)._eval$1("1(2)")._as(f); + $T._as(arg); + if ($.Zone__current === B.C__RootZone) + return f.call$1(arg); + return A._rootRunUnary(null, null, this, f, arg, $R, $T); + }, + runBinary$3$3(f, arg1, arg2, $R, T1, T2) { + $R._eval$1("@<0>")._bind$1(T1)._bind$1(T2)._eval$1("1(2,3)")._as(f); + T1._as(arg1); + T2._as(arg2); + if ($.Zone__current === B.C__RootZone) + return f.call$2(arg1, arg2); + return A._rootRunBinary(null, null, this, f, arg1, arg2, $R, T1, T2); + }, + registerBinaryCallback$3$1(f, $R, T1, T2) { + return $R._eval$1("@<0>")._bind$1(T1)._bind$1(T2)._eval$1("1(2,3)")._as(f); + } + }; + A._RootZone_bindCallbackGuarded_closure.prototype = { + call$0() { + return this.$this.runGuarded$1(this.f); + }, + $signature: 0 + }; + A._RootZone_bindUnaryCallbackGuarded_closure.prototype = { + call$1(arg) { + var t1 = this.T; + return this.$this.runUnaryGuarded$1$2(this.f, t1._as(arg), t1); + }, + $signature() { + return this.T._eval$1("~(0)"); + } + }; + A._HashMap.prototype = { + get$length(_) { + return this._collection$_length; + }, + get$keys(_) { + return new A._HashMapKeyIterable(this, this.$ti._eval$1("_HashMapKeyIterable<1>")); + }, + containsKey$1(_, key) { + var strings, nums; + if (typeof key == "string" && key !== "__proto__") { + strings = this._collection$_strings; + return strings == null ? false : strings[key] != null; + } else if (typeof key == "number" && (key & 1073741823) === key) { + nums = this._collection$_nums; + return nums == null ? false : nums[key] != null; + } else + return this._containsKey$1(key); + }, + _containsKey$1(key) { + var rest = this._collection$_rest; + if (rest == null) + return false; + return this._findBucketIndex$2(this._getBucket$2(rest, key), key) >= 0; + }, + $index(_, key) { + var strings, t1, nums; + if (typeof key == "string" && key !== "__proto__") { + strings = this._collection$_strings; + t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key); + return t1; + } else if (typeof key == "number" && (key & 1073741823) === key) { + nums = this._collection$_nums; + t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key); + return t1; + } else + return this._get$1(0, key); + }, + _get$1(_, key) { + var bucket, index, + rest = this._collection$_rest; + if (rest == null) + return null; + bucket = this._getBucket$2(rest, key); + index = this._findBucketIndex$2(bucket, key); + return index < 0 ? null : bucket[index + 1]; + }, + $indexSet(_, key, value) { + var rest, hash, bucket, index, _this = this, + t1 = _this.$ti; + t1._precomputed1._as(key); + t1._rest[1]._as(value); + rest = _this._collection$_rest; + if (rest == null) + rest = _this._collection$_rest = A._HashMap__newHashTable(); + hash = A.objectHashCode(key) & 1073741823; + bucket = rest[hash]; + if (bucket == null) { + A._HashMap__setTableEntry(rest, hash, [key, value]); + ++_this._collection$_length; + _this._keys = null; + } else { + index = _this._findBucketIndex$2(bucket, key); + if (index >= 0) + bucket[index + 1] = value; + else { + bucket.push(key, value); + ++_this._collection$_length; + _this._keys = null; + } + } + }, + forEach$1(_, action) { + var keys, $length, t2, i, key, t3, _this = this, + t1 = _this.$ti; + t1._eval$1("~(1,2)")._as(action); + keys = _this._computeKeys$0(); + for ($length = keys.length, t2 = t1._precomputed1, t1 = t1._rest[1], i = 0; i < $length; ++i) { + key = keys[i]; + t2._as(key); + t3 = _this.$index(0, key); + action.call$2(key, t3 == null ? t1._as(t3) : t3); + if (keys !== _this._keys) + throw A.wrapException(A.ConcurrentModificationError$(_this)); + } + }, + _computeKeys$0() { + var strings, names, entries, index, i, nums, rest, bucket, $length, i0, _this = this, + result = _this._keys; + if (result != null) + return result; + result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic); + strings = _this._collection$_strings; + if (strings != null) { + names = Object.getOwnPropertyNames(strings); + entries = names.length; + for (index = 0, i = 0; i < entries; ++i) { + result[index] = names[i]; + ++index; + } + } else + index = 0; + nums = _this._collection$_nums; + if (nums != null) { + names = Object.getOwnPropertyNames(nums); + entries = names.length; + for (i = 0; i < entries; ++i) { + result[index] = +names[i]; + ++index; + } + } + rest = _this._collection$_rest; + if (rest != null) { + names = Object.getOwnPropertyNames(rest); + entries = names.length; + for (i = 0; i < entries; ++i) { + bucket = rest[names[i]]; + $length = bucket.length; + for (i0 = 0; i0 < $length; i0 += 2) { + result[index] = bucket[i0]; + ++index; + } + } + } + return _this._keys = result; + }, + _getBucket$2(table, key) { + return table[A.objectHashCode(key) & 1073741823]; + } + }; + A._IdentityHashMap.prototype = { + _findBucketIndex$2(bucket, key) { + var $length, i, t1; + if (bucket == null) + return -1; + $length = bucket.length; + for (i = 0; i < $length; i += 2) { + t1 = bucket[i]; + if (t1 == null ? key == null : t1 === key) + return i; + } + return -1; + } + }; + A._HashMapKeyIterable.prototype = { + get$length(_) { + return this._collection$_map._collection$_length; + }, + get$iterator(_) { + var t1 = this._collection$_map; + return new A._HashMapKeyIterator(t1, t1._computeKeys$0(), this.$ti._eval$1("_HashMapKeyIterator<1>")); + } + }; + A._HashMapKeyIterator.prototype = { + get$current(_) { + var t1 = this._collection$_current; + return t1 == null ? this.$ti._precomputed1._as(t1) : t1; + }, + moveNext$0() { + var _this = this, + keys = _this._keys, + offset = _this._offset, + t1 = _this._collection$_map; + if (keys !== t1._keys) + throw A.wrapException(A.ConcurrentModificationError$(t1)); + else if (offset >= keys.length) { + _this.set$_collection$_current(null); + return false; + } else { + _this.set$_collection$_current(keys[offset]); + _this._offset = offset + 1; + return true; + } + }, + set$_collection$_current(_current) { + this._collection$_current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; + A.ListBase.prototype = {$isEfficientLengthIterable: 1, $isIterable: 1, $isList: 1}; + A.ListMixin.prototype = { + get$iterator(receiver) { + return new A.ListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("ListIterator")); + }, + elementAt$1(receiver, index) { + return this.$index(receiver, index); + }, + map$1$1(receiver, f, $T) { + var t1 = A.instanceType(receiver); + return new A.MappedListIterable(receiver, t1._bind$1($T)._eval$1("1(ListMixin.E)")._as(f), t1._eval$1("@")._bind$1($T)._eval$1("MappedListIterable<1,2>")); + }, + skip$1(receiver, count) { + return A.SubListIterable$(receiver, count, null, A.instanceType(receiver)._eval$1("ListMixin.E")); + }, + setRange$4(receiver, start, end, iterable, skipCount) { + var $length, otherStart, otherList, i, + t1 = A.instanceType(receiver); + t1._eval$1("Iterable")._as(iterable); + A.RangeError_checkValidRange(start, end, this.get$length(receiver)); + $length = end - start; + if ($length === 0) + return; + A.RangeError_checkNotNegative(skipCount, "skipCount"); + if (t1._eval$1("List")._is(iterable)) { + otherStart = skipCount; + otherList = iterable; + } else { + otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false); + otherStart = 0; + } + if (otherStart + $length > otherList.length) + throw A.wrapException(A.StateError$("Too few elements")); + if (otherStart < start) + for (i = $length - 1; i >= 0; --i) { + t1 = otherStart + i; + if (!(t1 < otherList.length)) + return A.ioore(otherList, t1); + this.$indexSet(receiver, start + i, otherList[t1]); + } + else + for (i = 0; i < $length; ++i) { + t1 = otherStart + i; + if (!(t1 < otherList.length)) + return A.ioore(otherList, t1); + this.$indexSet(receiver, start + i, otherList[t1]); + } + }, + toString$0(receiver) { + return A.IterableBase_iterableToFullString(receiver, "[", "]"); + } + }; + A.MapBase.prototype = {}; + A.MapBase_mapToString_closure.prototype = { + call$2(k, v) { + var t2, + t1 = this._box_0; + if (!t1.first) + this.result._contents += ", "; + t1.first = false; + t1 = this.result; + t2 = t1._contents += A.S(k); + t1._contents = t2 + ": "; + t1._contents += A.S(v); + }, + $signature: 16 + }; + A.MapMixin.prototype = { + forEach$1(receiver, action) { + var t2, key, t3, + t1 = A.instanceType(receiver); + t1._eval$1("~(MapMixin.K,MapMixin.V)")._as(action); + for (t2 = J.get$iterator$ax(this.get$keys(receiver)), t1 = t1._eval$1("MapMixin.V"); t2.moveNext$0();) { + key = t2.get$current(t2); + t3 = this.$index(receiver, key); + action.call$2(key, t3 == null ? t1._as(t3) : t3); + } + }, + get$length(receiver) { + return J.get$length$asx(this.get$keys(receiver)); + }, + toString$0(receiver) { + return A.MapBase_mapToString(receiver); + }, + $isMap: 1 + }; + A._UnmodifiableMapMixin.prototype = {}; + A.MapView.prototype = { + $index(_, key) { + return this._collection$_map.$index(0, key); + }, + forEach$1(_, action) { + this._collection$_map.forEach$1(0, this.$ti._eval$1("~(1,2)")._as(action)); + }, + get$length(_) { + return this._collection$_map._length; + }, + get$keys(_) { + var t1 = this._collection$_map; + return new A.LinkedHashMapKeyIterable(t1, t1.$ti._eval$1("LinkedHashMapKeyIterable<1>")); + }, + toString$0(_) { + return A.MapBase_mapToString(this._collection$_map); + }, + $isMap: 1 + }; + A.UnmodifiableMapView.prototype = {}; + A._ListBase_Object_ListMixin.prototype = {}; + A._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {}; + A.Base64Codec.prototype = {}; + A.Base64Encoder.prototype = { + convert$1(input) { + var t1; + type$.List_int._as(input); + t1 = input.length; + if (t1 === 0) + return ""; + t1 = new A._Base64Encoder("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").encode$4(input, 0, t1, true); + t1.toString; + return A.String_String$fromCharCodes(t1); + } + }; + A._Base64Encoder.prototype = { + encode$4(bytes, start, end, isLast) { + var t1, byteCount, fullChunks, bufferLength, output; + type$.List_int._as(bytes); + t1 = this._convert$_state; + byteCount = (t1 & 3) + (end - start); + fullChunks = B.JSInt_methods._tdivFast$1(byteCount, 3); + bufferLength = fullChunks * 4; + if (byteCount - fullChunks * 3 > 0) + bufferLength += 4; + output = new Uint8Array(bufferLength); + this._convert$_state = A._Base64Encoder_encodeChunk(this._alphabet, bytes, start, end, true, output, 0, t1); + if (bufferLength > 0) + return output; + return null; + } + }; + A.Base64Decoder.prototype = { + convert$1(input) { + var decoder, t1, t2, + end = A.RangeError_checkValidRange(0, null, input.length); + if (0 === end) + return new Uint8Array(0); + decoder = new A._Base64Decoder(); + t1 = decoder.decode$3(0, input, 0, end); + t1.toString; + t2 = decoder._convert$_state; + if (t2 < -1) + A.throwExpression(A.FormatException$("Missing padding character", input, end)); + if (t2 > 0) + A.throwExpression(A.FormatException$("Invalid length, must be multiple of four", input, end)); + decoder._convert$_state = -1; + return t1; + } + }; + A._Base64Decoder.prototype = { + decode$3(_, input, start, end) { + var buffer, _this = this, + t1 = _this._convert$_state; + if (t1 < 0) { + _this._convert$_state = A._Base64Decoder__checkPadding(input, start, end, t1); + return null; + } + if (start === end) + return new Uint8Array(0); + buffer = A._Base64Decoder__allocateBuffer(input, start, end, t1); + _this._convert$_state = A._Base64Decoder_decodeChunk(input, start, end, buffer, 0, _this._convert$_state); + return buffer; + } + }; + A.Codec.prototype = {}; + A.Converter.prototype = {}; + A.NoSuchMethodError_toString_closure.prototype = { + call$2(key, value) { + var t1, t2, t3; + type$.Symbol._as(key); + t1 = this.sb; + t2 = this._box_0; + t3 = t1._contents += t2.comma; + t3 += key.__internal$_name; + t1._contents = t3; + t1._contents = t3 + ": "; + t1._contents += A.Error_safeToString(value); + t2.comma = ", "; + }, + $signature: 17 + }; + A.DateTime.prototype = { + $eq(_, other) { + if (other == null) + return false; + return other instanceof A.DateTime && this._value === other._value && true; + }, + get$hashCode(_) { + var t1 = this._value; + return (t1 ^ B.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823; + }, + toString$0(_) { + var _this = this, + y = A.DateTime__fourDigits(A.Primitives_getYear(_this)), + m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)), + d = A.DateTime__twoDigits(A.Primitives_getDay(_this)), + h = A.DateTime__twoDigits(A.Primitives_getHours(_this)), + min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)), + sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)), + ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this)); + return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms + "Z"; + } + }; + A._Enum.prototype = { + toString$0(_) { + return this._enumToString$0(); + } + }; + A.Error.prototype = { + get$stackTrace() { + return A.getTraceFromException(this.$thrownJsError); + } + }; + A.AssertionError.prototype = { + toString$0(_) { + var t1 = this.message; + if (t1 != null) + return "Assertion failed: " + A.Error_safeToString(t1); + return "Assertion failed"; + } + }; + A.TypeError.prototype = {}; + A.NullThrownError.prototype = { + toString$0(_) { + return "Throw of null."; + }, + $isTypeError: 1 + }; + A.ArgumentError.prototype = { + get$_errorName() { + return "Invalid argument" + (!this._hasValue ? "(s)" : ""); + }, + get$_errorExplanation() { + return ""; + }, + toString$0(_) { + var _this = this, + $name = _this.name, + nameString = $name == null ? "" : " (" + $name + ")", + message = _this.message, + messageString = message == null ? "" : ": " + A.S(message), + prefix = _this.get$_errorName() + nameString + messageString; + if (!_this._hasValue) + return prefix; + return prefix + _this.get$_errorExplanation() + ": " + A.Error_safeToString(_this.get$invalidValue()); + }, + get$invalidValue() { + return this.invalidValue; + } + }; + A.RangeError.prototype = { + get$invalidValue() { + return A._asNumQ(this.invalidValue); + }, + get$_errorName() { + return "RangeError"; + }, + get$_errorExplanation() { + var explanation, + start = this.start, + end = this.end; + if (start == null) + explanation = end != null ? ": Not less than or equal to " + A.S(end) : ""; + else if (end == null) + explanation = ": Not greater than or equal to " + A.S(start); + else if (end > start) + explanation = ": Not in inclusive range " + A.S(start) + ".." + A.S(end); + else + explanation = end < start ? ": Valid value range is empty" : ": Only valid value is " + A.S(start); + return explanation; + } + }; + A.IndexError.prototype = { + get$invalidValue() { + return A._asInt(this.invalidValue); + }, + get$_errorName() { + return "RangeError"; + }, + get$_errorExplanation() { + if (A._asInt(this.invalidValue) < 0) + return ": index must not be negative"; + var t1 = this.length; + if (t1 === 0) + return ": no indices are valid"; + return ": index should be less than " + t1; + }, + get$length(receiver) { + return this.length; + } + }; + A.NoSuchMethodError.prototype = { + toString$0(_) { + var $arguments, t1, _i, t2, t3, argument, receiverText, actualParameters, _this = this, _box_0 = {}, + sb = new A.StringBuffer(""); + _box_0.comma = ""; + $arguments = _this._core$_arguments; + for (t1 = $arguments.length, _i = 0, t2 = "", t3 = ""; _i < t1; ++_i, t3 = ", ") { + argument = $arguments[_i]; + sb._contents = t2 + t3; + t2 = sb._contents += A.Error_safeToString(argument); + _box_0.comma = ", "; + } + _this._namedArguments.forEach$1(0, new A.NoSuchMethodError_toString_closure(_box_0, sb)); + receiverText = A.Error_safeToString(_this._core$_receiver); + actualParameters = sb.toString$0(0); + return "NoSuchMethodError: method not found: '" + _this._core$_memberName.__internal$_name + "'\nReceiver: " + receiverText + "\nArguments: [" + actualParameters + "]"; + } + }; + A.UnsupportedError.prototype = { + toString$0(_) { + return "Unsupported operation: " + this.message; + } + }; + A.UnimplementedError.prototype = { + toString$0(_) { + return "UnimplementedError: " + this.message; + } + }; + A.StateError.prototype = { + toString$0(_) { + return "Bad state: " + this.message; + } + }; + A.ConcurrentModificationError.prototype = { + toString$0(_) { + var t1 = this.modifiedObject; + if (t1 == null) + return "Concurrent modification during iteration."; + return "Concurrent modification during iteration: " + A.Error_safeToString(t1) + "."; + } + }; + A.OutOfMemoryError.prototype = { + toString$0(_) { + return "Out of Memory"; + }, + get$stackTrace() { + return null; + }, + $isError: 1 + }; + A.StackOverflowError.prototype = { + toString$0(_) { + return "Stack Overflow"; + }, + get$stackTrace() { + return null; + }, + $isError: 1 + }; + A.CyclicInitializationError.prototype = { + toString$0(_) { + return "Reading static variable '" + this.variableName + "' during its initialization"; + } + }; + A._Exception.prototype = { + toString$0(_) { + return "Exception: " + this.message; + } + }; + A.FormatException.prototype = { + toString$0(_) { + var lineNum, lineStart, previousCharWasCR, i, char, lineEnd, end, start, prefix, postfix, + message = this.message, + report = "" !== message ? "FormatException: " + message : "FormatException", + offset = this.offset, + source = this.source, + t1 = offset < 0 || offset > source.length; + if (t1) + offset = null; + if (offset == null) { + if (source.length > 78) + source = B.JSString_methods.substring$2(source, 0, 75) + "..."; + return report + "\n" + source; + } + for (lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) { + char = B.JSString_methods._codeUnitAt$1(source, i); + if (char === 10) { + if (lineStart !== i || !previousCharWasCR) + ++lineNum; + lineStart = i + 1; + previousCharWasCR = false; + } else if (char === 13) { + ++lineNum; + lineStart = i + 1; + previousCharWasCR = true; + } + } + report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n"); + lineEnd = source.length; + for (i = offset; i < lineEnd; ++i) { + char = B.JSString_methods.codeUnitAt$1(source, i); + if (char === 10 || char === 13) { + lineEnd = i; + break; + } + } + if (lineEnd - lineStart > 78) + if (offset - lineStart < 75) { + end = lineStart + 75; + start = lineStart; + prefix = ""; + postfix = "..."; + } else { + if (lineEnd - offset < 75) { + start = lineEnd - 75; + end = lineEnd; + postfix = ""; + } else { + start = offset - 36; + end = offset + 36; + postfix = "..."; + } + prefix = "..."; + } + else { + end = lineEnd; + start = lineStart; + prefix = ""; + postfix = ""; + } + return report + prefix + B.JSString_methods.substring$2(source, start, end) + postfix + "\n" + B.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n"; + } + }; + A.Iterable.prototype = { + map$1$1(_, toElement, $T) { + var t1 = A._instanceType(this); + return A.MappedIterable_MappedIterable(this, t1._bind$1($T)._eval$1("1(Iterable.E)")._as(toElement), t1._eval$1("Iterable.E"), $T); + }, + get$length(_) { + var count, + it = this.get$iterator(this); + for (count = 0; it.moveNext$0();) + ++count; + return count; + }, + elementAt$1(_, index) { + var t1, elementIndex, element; + A.RangeError_checkNotNegative(index, "index"); + for (t1 = this.get$iterator(this), elementIndex = 0; t1.moveNext$0();) { + element = t1.get$current(t1); + if (index === elementIndex) + return element; + ++elementIndex; + } + throw A.wrapException(A.IndexError$withLength(index, elementIndex, this, "index")); + }, + toString$0(_) { + return A.IterableBase_iterableToShortString(this, "(", ")"); + } + }; + A.Iterator.prototype = {}; + A.Null.prototype = { + get$hashCode(_) { + return A.Object.prototype.get$hashCode.call(this, this); + }, + toString$0(_) { + return "null"; + } + }; + A.Object.prototype = {$isObject: 1, + $eq(_, other) { + return this === other; + }, + get$hashCode(_) { + return A.Primitives_objectHashCode(this); + }, + toString$0(_) { + return "Instance of '" + A.Primitives_objectTypeName(this) + "'"; + }, + noSuchMethod$1(_, invocation) { + type$.Invocation._as(invocation); + throw A.wrapException(A.NoSuchMethodError$_(this, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments(), null)); + }, + toString() { + return this.toString$0(this); + } + }; + A._StringStackTrace.prototype = { + toString$0(_) { + return ""; + }, + $isStackTrace: 1 + }; + A.StringBuffer.prototype = { + get$length(_) { + return this._contents.length; + }, + toString$0(_) { + var t1 = this._contents; + return t1.charCodeAt(0) == 0 ? t1 : t1; + } + }; + A.HtmlElement.prototype = {}; + A.AccessibleNodeList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.AnchorElement.prototype = { + toString$0(receiver) { + return String(receiver); + } + }; + A.AreaElement.prototype = { + toString$0(receiver) { + return String(receiver); + } + }; + A.Blob.prototype = {$isBlob: 1}; + A.CharacterData.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.CryptoKey.prototype = {$isCryptoKey: 1}; + A.CssPerspective.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.CssRule.prototype = {$isCssRule: 1}; + A.CssStyleDeclaration.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.CssStyleDeclarationBase.prototype = {}; + A.CssStyleValue.prototype = {}; + A.CssTransformComponent.prototype = {}; + A.CssTransformValue.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.CssUnparsedValue.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.DataTransferItem.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.DataTransferItemList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + return receiver[A._asInt(index)]; + } + }; + A.DedicatedWorkerGlobalScope.prototype = { + postMessage$1(receiver, message) { + receiver.postMessage(new A._StructuredCloneDart2Js([], []).walk$1(message)); + return; + }, + $isDedicatedWorkerGlobalScope: 1 + }; + A.DomException.prototype = { + toString$0(receiver) { + return String(receiver); + } + }; + A.DomRectList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Rectangle_num._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.DomRectReadOnly.prototype = { + toString$0(receiver) { + var t2, + t1 = receiver.left; + t1.toString; + t2 = receiver.top; + t2.toString; + return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(this.get$width(receiver)) + " x " + A.S(this.get$height(receiver)); + }, + $eq(receiver, other) { + var t1, t2; + if (other == null) + return false; + if (type$.Rectangle_num._is(other)) { + t1 = receiver.left; + t1.toString; + t2 = other.left; + t2.toString; + if (t1 === t2) { + t1 = receiver.top; + t1.toString; + t2 = other.top; + t2.toString; + if (t1 === t2) { + t1 = J.getInterceptor$x(other); + t1 = this.get$width(receiver) === t1.get$width(other) && this.get$height(receiver) === t1.get$height(other); + } else + t1 = false; + } else + t1 = false; + } else + t1 = false; + return t1; + }, + get$hashCode(receiver) { + var t2, + t1 = receiver.left; + t1.toString; + t2 = receiver.top; + t2.toString; + return A.Object_hash(t1, t2, this.get$width(receiver), this.get$height(receiver)); + }, + get$_height(receiver) { + return receiver.height; + }, + get$height(receiver) { + var t1 = this.get$_height(receiver); + t1.toString; + return t1; + }, + get$_width(receiver) { + return receiver.width; + }, + get$width(receiver) { + var t1 = this.get$_width(receiver); + t1.toString; + return t1; + }, + $isRectangle: 1 + }; + A.DomStringList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + A._asString(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.DomTokenList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.Element.prototype = { + toString$0(receiver) { + return receiver.localName; + } + }; + A.Event.prototype = {$isEvent: 1}; + A.EventTarget.prototype = { + addEventListener$3(receiver, type, listener, useCapture) { + type$.nullable_dynamic_Function_Event._as(listener); + if (listener != null) + this._addEventListener$3(receiver, type, listener, false); + }, + _addEventListener$3(receiver, type, listener, options) { + return receiver.addEventListener(type, A.convertDartClosureToJS(type$.nullable_dynamic_Function_Event._as(listener), 1), false); + }, + $isEventTarget: 1 + }; + A.File.prototype = {$isFile: 1}; + A.FileList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.File._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1, + $isFileList: 1 + }; + A.FileWriter.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.FormElement.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.Gamepad.prototype = {$isGamepad: 1}; + A.History.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.HtmlCollection.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Node._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.ImageData.prototype = {$isImageData: 1}; + A.Location.prototype = { + toString$0(receiver) { + return String(receiver); + } + }; + A.MediaDeviceInfo.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.MediaList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.MediaStreamTrack.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.MessageEvent.prototype = {$isMessageEvent: 1}; + A.MessagePort.prototype = {$isMessagePort: 1}; + A.MidiInputMap.prototype = { + $index(receiver, key) { + return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); + }, + forEach$1(receiver, f) { + var entries, entry; + type$.void_Function_String_dynamic._as(f); + entries = receiver.entries(); + for (; true;) { + entry = entries.next(); + if (entry.done) + return; + f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); + } + }, + get$keys(receiver) { + var keys = A._setArrayType([], type$.JSArray_String); + this.forEach$1(receiver, new A.MidiInputMap_keys_closure(keys)); + return keys; + }, + get$length(receiver) { + return receiver.size; + }, + $isMap: 1 + }; + A.MidiInputMap_keys_closure.prototype = { + call$2(k, v) { + return B.JSArray_methods.add$1(this.keys, k); + }, + $signature: 2 + }; + A.MidiOutputMap.prototype = { + $index(receiver, key) { + return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); + }, + forEach$1(receiver, f) { + var entries, entry; + type$.void_Function_String_dynamic._as(f); + entries = receiver.entries(); + for (; true;) { + entry = entries.next(); + if (entry.done) + return; + f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); + } + }, + get$keys(receiver) { + var keys = A._setArrayType([], type$.JSArray_String); + this.forEach$1(receiver, new A.MidiOutputMap_keys_closure(keys)); + return keys; + }, + get$length(receiver) { + return receiver.size; + }, + $isMap: 1 + }; + A.MidiOutputMap_keys_closure.prototype = { + call$2(k, v) { + return B.JSArray_methods.add$1(this.keys, k); + }, + $signature: 2 + }; + A.MimeType.prototype = {$isMimeType: 1}; + A.MimeTypeArray.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.MimeType._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.Node.prototype = { + toString$0(receiver) { + var value = receiver.nodeValue; + return value == null ? this.super$Interceptor$toString(receiver) : value; + }, + $isNode: 1 + }; + A.NodeList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Node._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.Plugin.prototype = { + get$length(receiver) { + return receiver.length; + }, + $isPlugin: 1 + }; + A.PluginArray.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Plugin._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.RtcStatsReport.prototype = { + $index(receiver, key) { + return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); + }, + forEach$1(receiver, f) { + var entries, entry; + type$.void_Function_String_dynamic._as(f); + entries = receiver.entries(); + for (; true;) { + entry = entries.next(); + if (entry.done) + return; + f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); + } + }, + get$keys(receiver) { + var keys = A._setArrayType([], type$.JSArray_String); + this.forEach$1(receiver, new A.RtcStatsReport_keys_closure(keys)); + return keys; + }, + get$length(receiver) { + return receiver.size; + }, + $isMap: 1 + }; + A.RtcStatsReport_keys_closure.prototype = { + call$2(k, v) { + return B.JSArray_methods.add$1(this.keys, k); + }, + $signature: 2 + }; + A.SelectElement.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.SharedArrayBuffer.prototype = {$isSharedArrayBuffer: 1}; + A.SourceBuffer.prototype = {$isSourceBuffer: 1}; + A.SourceBufferList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.SourceBuffer._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.SpeechGrammar.prototype = {$isSpeechGrammar: 1}; + A.SpeechGrammarList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.SpeechGrammar._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.SpeechRecognitionResult.prototype = { + get$length(receiver) { + return receiver.length; + }, + $isSpeechRecognitionResult: 1 + }; + A.Storage.prototype = { + $index(receiver, key) { + return receiver.getItem(A._asString(key)); + }, + forEach$1(receiver, f) { + var i, key, t1; + type$.void_Function_String_String._as(f); + for (i = 0; true; ++i) { + key = receiver.key(i); + if (key == null) + return; + t1 = receiver.getItem(key); + t1.toString; + f.call$2(key, t1); + } + }, + get$keys(receiver) { + var keys = A._setArrayType([], type$.JSArray_String); + this.forEach$1(receiver, new A.Storage_keys_closure(keys)); + return keys; + }, + get$length(receiver) { + return receiver.length; + }, + $isMap: 1 + }; + A.Storage_keys_closure.prototype = { + call$2(k, v) { + return B.JSArray_methods.add$1(this.keys, k); + }, + $signature: 18 + }; + A.StyleSheet.prototype = {$isStyleSheet: 1}; + A.TextTrack.prototype = { + get$kind(receiver) { + return receiver.kind; + }, + $isTextTrack: 1 + }; + A.TextTrackCue.prototype = {$isTextTrackCue: 1}; + A.TextTrackCueList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.TextTrackCue._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.TextTrackList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.TextTrack._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.TimeRanges.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.Touch.prototype = {$isTouch: 1}; + A.TouchList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Touch._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.TrackDefaultList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.TrackElement.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.Url.prototype = { + toString$0(receiver) { + return String(receiver); + } + }; + A.VideoTrack.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.VideoTrackList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.WorkerGlobalScope.prototype = {}; + A._CssRuleList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.CssRule._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A._DomRect.prototype = { + toString$0(receiver) { + var t2, t3, t4, + t1 = receiver.left; + t1.toString; + t2 = receiver.top; + t2.toString; + t3 = receiver.width; + t3.toString; + t4 = receiver.height; + t4.toString; + return "Rectangle (" + A.S(t1) + ", " + A.S(t2) + ") " + A.S(t3) + " x " + A.S(t4); + }, + $eq(receiver, other) { + var t1, t2; + if (other == null) + return false; + if (type$.Rectangle_num._is(other)) { + t1 = receiver.left; + t1.toString; + t2 = other.left; + t2.toString; + if (t1 === t2) { + t1 = receiver.top; + t1.toString; + t2 = other.top; + t2.toString; + if (t1 === t2) { + t1 = receiver.width; + t1.toString; + t2 = J.getInterceptor$x(other); + if (t1 === t2.get$width(other)) { + t1 = receiver.height; + t1.toString; + t2 = t1 === t2.get$height(other); + t1 = t2; + } else + t1 = false; + } else + t1 = false; + } else + t1 = false; + } else + t1 = false; + return t1; + }, + get$hashCode(receiver) { + var t2, t3, t4, + t1 = receiver.left; + t1.toString; + t2 = receiver.top; + t2.toString; + t3 = receiver.width; + t3.toString; + t4 = receiver.height; + t4.toString; + return A.Object_hash(t1, t2, t3, t4); + }, + get$_height(receiver) { + return receiver.height; + }, + get$height(receiver) { + var t1 = receiver.height; + t1.toString; + return t1; + }, + get$_width(receiver) { + return receiver.width; + }, + get$width(receiver) { + var t1 = receiver.width; + t1.toString; + return t1; + } + }; + A._GamepadList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.nullable_Gamepad._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A._NamedNodeMap.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.Node._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A._SpeechRecognitionResultList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.SpeechRecognitionResult._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A._StyleSheetList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + var t1; + A._asInt(index); + t1 = receiver.length; + if (index >>> 0 !== index || index >= t1) + throw A.wrapException(A.IndexError$withLength(index, t1, receiver, null)); + return receiver[index]; + }, + $indexSet(receiver, index, value) { + type$.StyleSheet._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + if (!(index >= 0 && index < receiver.length)) + return A.ioore(receiver, index); + return receiver[index]; + }, + $isJSIndexable: 1, + $isEfficientLengthIterable: 1, + $isJavaScriptIndexingBehavior: 1, + $isIterable: 1, + $isList: 1 + }; + A.EventStreamProvider.prototype = {}; + A._EventStream.prototype = {}; + A._EventStreamSubscription.prototype = {}; + A._EventStreamSubscription_closure.prototype = { + call$1(e) { + return this.onData.call$1(type$.Event._as(e)); + }, + $signature: 19 + }; + A.ImmutableListMixin.prototype = { + get$iterator(receiver) { + return new A.FixedSizeListIterator(receiver, this.get$length(receiver), A.instanceType(receiver)._eval$1("FixedSizeListIterator")); + } + }; + A.FixedSizeListIterator.prototype = { + moveNext$0() { + var _this = this, + nextPosition = _this._position + 1, + t1 = _this._html$_length; + if (nextPosition < t1) { + _this.set$_html$_current(J.$index$asx(_this._array, nextPosition)); + _this._position = nextPosition; + return true; + } + _this.set$_html$_current(null); + _this._position = t1; + return false; + }, + get$current(_) { + var t1 = this._html$_current; + return t1 == null ? this.$ti._precomputed1._as(t1) : t1; + }, + set$_html$_current(_current) { + this._html$_current = this.$ti._eval$1("1?")._as(_current); + }, + $isIterator: 1 + }; + A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase.prototype = {}; + A._DomRectList_JavaScriptObject_ListMixin.prototype = {}; + A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._DomStringList_JavaScriptObject_ListMixin.prototype = {}; + A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._FileList_JavaScriptObject_ListMixin.prototype = {}; + A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._HtmlCollection_JavaScriptObject_ListMixin.prototype = {}; + A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._MidiInputMap_JavaScriptObject_MapMixin.prototype = {}; + A._MidiOutputMap_JavaScriptObject_MapMixin.prototype = {}; + A._MimeTypeArray_JavaScriptObject_ListMixin.prototype = {}; + A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._NodeList_JavaScriptObject_ListMixin.prototype = {}; + A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._PluginArray_JavaScriptObject_ListMixin.prototype = {}; + A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._RtcStatsReport_JavaScriptObject_MapMixin.prototype = {}; + A._SourceBufferList_EventTarget_ListMixin.prototype = {}; + A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.prototype = {}; + A._SpeechGrammarList_JavaScriptObject_ListMixin.prototype = {}; + A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._Storage_JavaScriptObject_MapMixin.prototype = {}; + A._TextTrackCueList_JavaScriptObject_ListMixin.prototype = {}; + A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._TextTrackList_EventTarget_ListMixin.prototype = {}; + A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.prototype = {}; + A._TouchList_JavaScriptObject_ListMixin.prototype = {}; + A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.__CssRuleList_JavaScriptObject_ListMixin.prototype = {}; + A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.__GamepadList_JavaScriptObject_ListMixin.prototype = {}; + A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.__NamedNodeMap_JavaScriptObject_ListMixin.prototype = {}; + A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin.prototype = {}; + A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.__StyleSheetList_JavaScriptObject_ListMixin.prototype = {}; + A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._StructuredClone.prototype = { + findSlot$1(value) { + var i, + t1 = this.values, + $length = t1.length; + for (i = 0; i < $length; ++i) + if (t1[i] === value) + return i; + B.JSArray_methods.add$1(t1, value); + B.JSArray_methods.add$1(this.copies, null); + return $length; + }, + walk$1(e) { + var slot, t2, copy, _this = this, t1 = {}; + if (e == null) + return e; + if (A._isBool(e)) + return e; + if (typeof e == "number") + return e; + if (typeof e == "string") + return e; + if (e instanceof A.DateTime) + return new Date(e._value); + if (type$.File._is(e)) + return e; + if (type$.Blob._is(e)) + return e; + if (type$.FileList._is(e)) + return e; + if (type$.ImageData._is(e)) + return e; + if (type$.NativeByteBuffer._is(e) || type$.NativeTypedData._is(e) || type$.MessagePort._is(e) || type$.SharedArrayBuffer._is(e)) + return e; + if (type$.Map_dynamic_dynamic._is(e)) { + slot = _this.findSlot$1(e); + t2 = _this.copies; + if (!(slot < t2.length)) + return A.ioore(t2, slot); + copy = t1.copy = t2[slot]; + if (copy != null) + return copy; + copy = {}; + t1.copy = copy; + B.JSArray_methods.$indexSet(t2, slot, copy); + J.forEach$1$x(e, new A._StructuredClone_walk_closure(t1, _this)); + return t1.copy; + } + if (type$.List_dynamic._is(e)) { + slot = _this.findSlot$1(e); + t1 = _this.copies; + if (!(slot < t1.length)) + return A.ioore(t1, slot); + copy = t1[slot]; + if (copy != null) + return copy; + return _this.copyList$2(e, slot); + } + if (type$.JSObject._is(e)) { + slot = _this.findSlot$1(e); + t2 = _this.copies; + if (!(slot < t2.length)) + return A.ioore(t2, slot); + copy = t1.copy = t2[slot]; + if (copy != null) + return copy; + copy = {}; + t1.copy = copy; + B.JSArray_methods.$indexSet(t2, slot, copy); + _this.forEachObjectKey$2(e, new A._StructuredClone_walk_closure0(t1, _this)); + return t1.copy; + } + throw A.wrapException(A.UnimplementedError$("structured clone of other type")); + }, + copyList$2(e, slot) { + var i, + t1 = J.getInterceptor$asx(e), + $length = t1.get$length(e), + copy = new Array($length); + B.JSArray_methods.$indexSet(this.copies, slot, copy); + for (i = 0; i < $length; ++i) + B.JSArray_methods.$indexSet(copy, i, this.walk$1(t1.$index(e, i))); + return copy; + } + }; + A._StructuredClone_walk_closure.prototype = { + call$2(key, value) { + this._box_0.copy[key] = this.$this.walk$1(value); + }, + $signature: 20 + }; + A._StructuredClone_walk_closure0.prototype = { + call$2(key, value) { + this._box_0.copy[key] = this.$this.walk$1(value); + }, + $signature: 21 + }; + A._AcceptStructuredClone.prototype = { + findSlot$1(value) { + var i, + t1 = this.values, + $length = t1.length; + for (i = 0; i < $length; ++i) + if (t1[i] === value) + return i; + B.JSArray_methods.add$1(t1, value); + B.JSArray_methods.add$1(this.copies, null); + return $length; + }, + walk$1(e) { + var millisSinceEpoch, t1, slot, copy, t2, map, l, $length, i, _this = this; + if (e == null) + return e; + if (A._isBool(e)) + return e; + if (typeof e == "number") + return e; + if (typeof e == "string") + return e; + if (e instanceof Date) { + millisSinceEpoch = e.getTime(); + if (Math.abs(millisSinceEpoch) <= 864e13) + t1 = false; + else + t1 = true; + if (t1) + A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + millisSinceEpoch, null)); + A.checkNotNullable(true, "isUtc", type$.bool); + return new A.DateTime(millisSinceEpoch, true); + } + if (e instanceof RegExp) + throw A.wrapException(A.UnimplementedError$("structured clone of RegExp")); + if (typeof Promise != "undefined" && e instanceof Promise) + return A.promiseToFuture(e, type$.dynamic); + if (A.isJavaScriptSimpleObject(e)) { + slot = _this.findSlot$1(e); + t1 = _this.copies; + if (!(slot < t1.length)) + return A.ioore(t1, slot); + copy = t1[slot]; + if (copy != null) + return copy; + t2 = type$.dynamic; + map = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2); + B.JSArray_methods.$indexSet(t1, slot, map); + _this.forEachJsField$2(e, new A._AcceptStructuredClone_walk_closure(_this, map)); + return map; + } + if (e instanceof Array) { + l = e; + slot = _this.findSlot$1(l); + t1 = _this.copies; + if (!(slot < t1.length)) + return A.ioore(t1, slot); + copy = t1[slot]; + if (copy != null) + return copy; + t2 = J.getInterceptor$asx(l); + $length = t2.get$length(l); + copy = _this.mustCopy ? new Array($length) : l; + B.JSArray_methods.$indexSet(t1, slot, copy); + for (t1 = J.getInterceptor$ax(copy), i = 0; i < $length; ++i) + t1.$indexSet(copy, i, _this.walk$1(t2.$index(l, i))); + return copy; + } + return e; + } + }; + A._AcceptStructuredClone_walk_closure.prototype = { + call$2(key, value) { + var t1 = this.$this.walk$1(value); + this.map.$indexSet(0, key, t1); + return t1; + }, + $signature: 22 + }; + A._StructuredCloneDart2Js.prototype = { + forEachObjectKey$2(object, action) { + var t1, t2, _i, key; + type$.dynamic_Function_dynamic_dynamic._as(action); + for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t2; ++_i) { + key = t1[_i]; + action.call$2(key, object[key]); + } + } + }; + A._AcceptStructuredCloneDart2Js.prototype = { + forEachJsField$2(object, action) { + var t1, t2, _i, key; + type$.dynamic_Function_dynamic_dynamic._as(action); + for (t1 = Object.keys(object), t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) { + key = t1[_i]; + action.call$2(key, object[key]); + } + } + }; + A._convertDataTree__convert.prototype = { + call$1(o) { + var convertedMap, t2, key, convertedList, + t1 = this._convertedObjects; + if (t1.containsKey$1(0, o)) + return t1.$index(0, o); + if (type$.Map_dynamic_dynamic._is(o)) { + convertedMap = {}; + t1.$indexSet(0, o, convertedMap); + for (t1 = J.getInterceptor$x(o), t2 = J.get$iterator$ax(t1.get$keys(o)); t2.moveNext$0();) { + key = t2.get$current(t2); + convertedMap[key] = this.call$1(t1.$index(o, key)); + } + return convertedMap; + } else if (type$.Iterable_dynamic._is(o)) { + convertedList = []; + t1.$indexSet(0, o, convertedList); + B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic)); + return convertedList; + } else + return o; + }, + $signature: 23 + }; + A.promiseToFuture_closure.prototype = { + call$1(r) { + return this.completer.complete$1(0, this.T._eval$1("0/?")._as(r)); + }, + $signature: 4 + }; + A.promiseToFuture_closure0.prototype = { + call$1(e) { + if (e == null) + return this.completer.completeError$1(new A.NullRejectionException(e === undefined)); + return this.completer.completeError$1(e); + }, + $signature: 4 + }; + A.NullRejectionException.prototype = { + toString$0(_) { + return "Promise was rejected with a value of `" + (this.isUndefined ? "undefined" : "null") + "`."; + } + }; + 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, t4, random, result, _null = null; + if (max <= 0 || max > 4294967296) + throw A.wrapException(new A.RangeError(_null, _null, false, _null, _null, "max must be in range 0 < max \u2264 2^32, was " + max)); + if (max > 255) + if (max > 65535) + byteCount = max > 16777215 ? 4 : 3; + else + byteCount = 2; + else + byteCount = 1; + t1 = this._math$_buffer; + B.NativeByteData_methods._setUint32$3(t1, 0, 0, false); + start = 4 - byteCount; + randomLimit = A._asInt(Math.pow(256, byteCount)); + for (t2 = max - 1, t3 = (max & t2) === 0; true;) { + t4 = t1.buffer; + t4 = new Uint8Array(t4, start, byteCount); + crypto.getRandomValues(t4); + random = B.NativeByteData_methods._getUint32$2(t1, 0, false); + if (t3) + return (random & t2) >>> 0; + result = random % max; + if (random - result + max < randomLimit) + return result; + } + } + }; + A.Length.prototype = {$isLength: 1}; + A.LengthList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + if (index >>> 0 !== index || index >= receiver.length) + throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); + return receiver.getItem(index); + }, + $indexSet(receiver, index, value) { + type$.Length._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + return this.$index(receiver, index); + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A.Number.prototype = {$isNumber: 1}; + A.NumberList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + if (index >>> 0 !== index || index >= receiver.length) + throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); + return receiver.getItem(index); + }, + $indexSet(receiver, index, value) { + type$.Number._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + return this.$index(receiver, index); + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A.PointList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.StringList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + if (index >>> 0 !== index || index >= receiver.length) + throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); + return receiver.getItem(index); + }, + $indexSet(receiver, index, value) { + A._asString(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + return this.$index(receiver, index); + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A.Transform.prototype = {$isTransform: 1}; + A.TransformList.prototype = { + get$length(receiver) { + return receiver.length; + }, + $index(receiver, index) { + A._asInt(index); + if (index >>> 0 !== index || index >= receiver.length) + throw A.wrapException(A.IndexError$withLength(index, this.get$length(receiver), receiver, null)); + return receiver.getItem(index); + }, + $indexSet(receiver, index, value) { + type$.Transform._as(value); + throw A.wrapException(A.UnsupportedError$("Cannot assign element of immutable List.")); + }, + elementAt$1(receiver, index) { + return this.$index(receiver, index); + }, + $isEfficientLengthIterable: 1, + $isIterable: 1, + $isList: 1 + }; + A._LengthList_JavaScriptObject_ListMixin.prototype = {}; + A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._NumberList_JavaScriptObject_ListMixin.prototype = {}; + A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._StringList_JavaScriptObject_ListMixin.prototype = {}; + A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A._TransformList_JavaScriptObject_ListMixin.prototype = {}; + A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin.prototype = {}; + A.AudioBuffer.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.AudioParamMap.prototype = { + $index(receiver, key) { + return A.convertNativeToDart_Dictionary(receiver.get(A._asString(key))); + }, + forEach$1(receiver, f) { + var entries, entry; + type$.void_Function_String_dynamic._as(f); + entries = receiver.entries(); + for (; true;) { + entry = entries.next(); + if (entry.done) + return; + f.call$2(entry.value[0], A.convertNativeToDart_Dictionary(entry.value[1])); + } + }, + get$keys(receiver) { + var keys = A._setArrayType([], type$.JSArray_String); + this.forEach$1(receiver, new A.AudioParamMap_keys_closure(keys)); + return keys; + }, + get$length(receiver) { + return receiver.size; + }, + $isMap: 1 + }; + A.AudioParamMap_keys_closure.prototype = { + call$2(k, v) { + return B.JSArray_methods.add$1(this.keys, k); + }, + $signature: 2 + }; + A.AudioTrack.prototype = { + get$kind(receiver) { + return receiver.kind; + } + }; + A.AudioTrackList.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A.BaseAudioContext.prototype = {}; + A.OfflineAudioContext.prototype = { + get$length(receiver) { + return receiver.length; + } + }; + A._AudioParamMap_JavaScriptObject_MapMixin.prototype = {}; + A.WritableStream.prototype = {}; + A.ReadableStream.prototype = {}; + A.TransformStream.prototype = {}; + A.TransformStreamDefaultController.prototype = {}; + A.EncodedStreams.prototype = {}; + A.RTCEncodedFrame.prototype = {}; + A.RTCEncodedAudioFrame.prototype = {}; + A.RTCEncodedVideoFrame.prototype = {}; + A.RTCEncodedFrameMetadata.prototype = {}; + A.RTCEncodedAudioFrameMetadata.prototype = {}; + A.RTCEncodedVideoFrameMetadata.prototype = {}; + A.RTCTransformEvent.prototype = {}; + A.RTCRtpScriptTransformer.prototype = {}; + A.RTCRtpScriptTransform.prototype = {}; + A.Promise.prototype = {}; + A.Algorithm.prototype = {}; + A.AesGcmParams.prototype = {}; + A.KeyOptions.prototype = { + toString$0(_) { + return "KeyOptions{sharedKey: " + this.sharedKey + ", ratchetWindowSize: " + this.ratchetWindowSize + "}"; + } + }; + A.CryptorError.prototype = { + _enumToString$0() { + return "CryptorError." + this._name; + } + }; + A.KeySet.prototype = {}; + A.FrameCryptor.prototype = { + get$kind(_) { + var t1 = this.__FrameCryptor_kind_A; + t1 === $ && A.throwLateFieldNI("kind"); + return t1; + }, + ratchetKey$1(keyIndex) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$self = this, t1, currentMaterial; + var $async$ratchetKey$1 = 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 + if ($async$self._ratchetCompleter == null) { + $async$self._ratchetCompleter = new A._AsyncCompleter(new A._Future($.Zone__current, type$._Future_void), type$._AsyncCompleter_void); + t1 = $async$self.getKeySet$1(keyIndex); + currentMaterial = t1 == null ? null : t1.material; + if (currentMaterial == null) { + $async$self._ratchetCompleter.complete$0(0); + $async$self._ratchetCompleter = null; + // goto return + $async$goto = 1; + break; + } + $async$self.ratchetMaterial$1(currentMaterial).then$1$1(new A.FrameCryptor_ratchetKey_closure($async$self, keyIndex), type$.Null); + } + $async$returnValue = $async$self._ratchetCompleter.future; + // goto return + $async$goto = 1; + break; + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + } + }); + return A._asyncStartSync($async$ratchetKey$1, $async$completer); + }, + ratchetMaterial$1(currentMaterial) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.CryptoKey), + $async$returnValue, $async$self = this, $async$temp1, $async$temp2, $async$temp3, $async$temp4; + var $async$ratchetMaterial$1 = 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$temp1 = type$.FutureOr_CryptoKey; + $async$temp2 = A; + $async$temp3 = self.crypto.subtle; + $async$temp4 = A; + $async$goto = 4; + return A._asyncAwait($async$self.ratchet$2(currentMaterial, $async$self.keyOptions.ratchetSalt), $async$ratchetMaterial$1); + case 4: + // returning from await. + $async$goto = 3; + return A._asyncAwait($async$temp2.promiseToFuture($async$temp3.importKey("raw", $async$temp4.jsArrayBufferFrom($async$result), J.get$name$x(type$.Algorithm._as(currentMaterial.algorithm)), false, A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String)), type$.dynamic), $async$ratchetMaterial$1); + case 3: + // returning from await. + $async$returnValue = $async$temp1._as($async$result); + // goto return + $async$goto = 1; + break; + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + } + }); + return A._asyncStartSync($async$ratchetMaterial$1, $async$completer); + }, + getKeySet$1(keyIndex) { + var t1 = this.cryptoKeyRing, + t2 = keyIndex == null ? this.currentKeyIndex : keyIndex; + if (!(t2 >= 0 && t2 < 16)) + return A.ioore(t1, t2); + return t1[t2]; + }, + setKey$2(keyIndex, key) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this; + var $async$setKey$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 + if ($async$self.lastError !== B.CryptorError_1) { + A.print("setKey: lastError != CryptorError.kOk, reset state to kNew"); + $async$self.lastError = B.CryptorError_0; + } + $async$goto = 4; + return A._asyncAwait(A.impportKeyFromRawData(key, A._setArrayType(["deriveBits", "deriveKey"], type$.JSArray_String), "PBKDF2"), $async$setKey$2); + case 4: + // returning from await. + $async$goto = 3; + return A._asyncAwait($async$self.deriveKeys$2($async$result, $async$self.keyOptions.ratchetSalt), $async$setKey$2); + case 3: + // returning from await. + $async$goto = 2; + return A._asyncAwait($async$self.setKeySetFromMaterial$2($async$result, keyIndex), $async$setKey$2); + case 2: + // returning from await. + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$setKey$2, $async$completer); + }, + setKeySetFromMaterial$2(keySet, keyIndex) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this; + var $async$setKeySetFromMaterial$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 + A.print("setting new key"); + if (keyIndex >= 0) + $async$self.currentKeyIndex = B.JSInt_methods.$mod(keyIndex, 16); + B.JSArray_methods.$indexSet($async$self.cryptoKeyRing, $async$self.currentKeyIndex, keySet); + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$setKeySetFromMaterial$2, $async$completer); + }, + deriveKeys$2(material, salt) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.KeySet), + $async$returnValue, algorithmOptions, $async$temp1, $async$temp2; + var $async$deriveKeys$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 + algorithmOptions = A.getAlgoOptions(J.get$name$x(type$.Algorithm._as(material.algorithm)), salt); + $async$temp1 = A; + $async$temp2 = material; + $async$goto = 3; + return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.deriveKey(A.jsify(algorithmOptions), material, A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["name", "AES-GCM", "length", 128], type$.String, type$.Object)), false, A._setArrayType(["encrypt", "decrypt"], type$.JSArray_String)), type$.CryptoKey), $async$deriveKeys$2); + case 3: + // returning from await. + $async$returnValue = new $async$temp1.KeySet($async$temp2, $async$result); + // goto return + $async$goto = 1; + break; + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + } + }); + return A._asyncStartSync($async$deriveKeys$2, $async$completer); + }, + ratchet$2(material, salt) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.Uint8List), + $async$returnValue, algorithmOptions, $async$temp1; + var $async$ratchet$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 + algorithmOptions = A.getAlgoOptions("PBKDF2", salt); + $async$temp1 = A; + $async$goto = 3; + return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.deriveBits(A.jsify(algorithmOptions), material, 256), type$.ByteBuffer), $async$ratchet$2); + case 3: + // returning from await. + $async$returnValue = $async$temp1.NativeUint8List_NativeUint8List$view($async$result, 0, null); + // goto return + $async$goto = 1; + break; + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + } + }); + return A._asyncStartSync($async$ratchet$2, $async$completer); + }, + setupTransform$6$codec$kind$operation$readable$trackId$writable(codec, kind, operation, readable, trackId, writable) { + return this.setupTransform$body$FrameCryptor(codec, kind, operation, readable, trackId, writable); + }, + setupTransform$5$kind$operation$readable$trackId$writable(kind, operation, readable, trackId, writable) { + return this.setupTransform$6$codec$kind$operation$readable$trackId$writable(null, kind, operation, readable, trackId, writable); + }, + setupTransform$body$FrameCryptor(codec, kind, operation, readable, trackId, writable) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$self = this, transformer, e, t1, t2, t3, exception; + var $async$setupTransform$6$codec$kind$operation$readable$trackId$writable = 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 + A.print("setupTransform " + operation); + $async$self.__FrameCryptor_kind_A = kind; + if (codec != null) { + A.print("setting codec on cryptor to " + codec); + $async$self.codec = codec; + } + t1 = operation === "encode" ? $async$self.get$encodeFunction() : $async$self.get$decodeFunction(); + t2 = type$.Future_void_Function_RTCEncodedFrame_TransformStreamDefaultController; + t3 = type$.String; + transformer = new self.TransformStream(A.jsify(A.LinkedHashMap_LinkedHashMap$_literal(["transform", A.allowInterop(t1, t2)], t3, t2))); + try { + J.pipeTo$1$x(J.pipeThrough$1$x(readable, transformer), writable); + } catch (exception) { + e = A.unwrapException(exception); + A.print("e " + J.toString$0$(e)); + if ($async$self.lastError !== B.CryptorError_7) { + $async$self.lastError = B.CryptorError_7; + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "state", "internalError", "error", "Internal error: " + J.toString$0$(e)], t3, type$.nullable_String)); + } + } + $async$self.trackId = trackId; + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$setupTransform$6$codec$kind$operation$readable$trackId$writable, $async$completer); + }, + getUnencryptedBytes$2(frame, codec) { + var data, naluIndices, t1, t2, _i, index; + if (codec != null && codec.toLowerCase() === "h264") { + data = A.NativeUint8List_NativeUint8List$view(J.get$data$x(frame), 0, null); + naluIndices = A.findNALUIndices(data); + for (t1 = naluIndices.length, t2 = data.length, _i = 0; _i < t1; ++_i) { + index = naluIndices[_i]; + if (!(index < t2)) + return A.ioore(data, index); + switch (data[index] & 31) { + case 5: + case 1: + return index + 2; + default: + break; + } + } + throw A.wrapException(A.Exception_Exception("Could not find NALU")); + } + switch (J.get$type$x(frame)) { + case "key": + return 10; + case "delta": + return 3; + case "audio": + return 1; + default: + return 0; + } + }, + encodeFunction$2(frame, controller) { + return this.encodeFunction$body$FrameCryptor(type$.RTCEncodedFrame._as(frame), type$.TransformStreamDefaultController._as(controller)); + }, + encodeFunction$body$FrameCryptor(frame, controller) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, secretKey, keyIndex, headerLength, metaData, iv, frameTrailer, cipherText, finalBuffer, e, t2, t3, t4, iv0, sendCount, exception, t1, buffer, $async$exception; + var $async$encodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$currentError = $async$result; + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start + t1 = J.getInterceptor$x(frame); + buffer = A.NativeUint8List_NativeUint8List$view(t1.get$data(frame), 0, null); + if (!$async$self.enabled || J.get$length$asx(buffer) === 0) { + J.enqueue$1$x(controller, frame); + // goto return + $async$goto = 1; + break; + } + t2 = $async$self.getKeySet$1($async$self.currentKeyIndex); + secretKey = t2 == null ? null : t2.encryptionKey; + keyIndex = $async$self.currentKeyIndex; + if (secretKey == null) { + if ($async$self.lastError !== B.CryptorError_5) { + $async$self.lastError = B.CryptorError_5; + t1 = $async$self.participantId; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "missingKey", "error", "Missing key for track " + A.S(t2)], type$.String, type$.nullable_String)); + } + // goto return + $async$goto = 1; + break; + } + $async$handler = 4; + t2 = $async$self.__FrameCryptor_kind_A; + t2 === $ && A.throwLateFieldNI("kind"); + headerLength = t2 === "video" ? $async$self.getUnencryptedBytes$2(frame, $async$self.codec) : 1; + metaData = t1.getMetadata$0(frame); + t3 = J.get$synchronizationSource$x(metaData); + t4 = t1.get$timestamp(frame); + A._asInt(t3); + A._asInt(t4); + iv0 = new DataView(new ArrayBuffer(12)); + t2 = $async$self.sendCounts; + if (t2.$index(0, t3) == null) + t2.$indexSet(0, t3, $.$get$Random__secureRandom().nextInt$1(65535)); + sendCount = t2.$index(0, t3); + if (sendCount == null) + sendCount = 0; + B.NativeByteData_methods._setUint32$3(iv0, 0, t3, false); + B.NativeByteData_methods._setUint32$3(iv0, 4, t4, false); + B.NativeByteData_methods._setUint32$3(iv0, 8, t4 - B.JSInt_methods.$mod(sendCount, 65535), false); + t2.$indexSet(0, t3, sendCount + 1); + iv = A.NativeUint8List_NativeUint8List$view(iv0.buffer, 0, null); + frameTrailer = new DataView(new ArrayBuffer(2)); + J.setInt8$2$x(frameTrailer, 0, 12); + J.setInt8$2$x(frameTrailer, 1, keyIndex); + $async$goto = 7; + return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.encrypt({name: "AES-GCM", iv: A.jsArrayBufferFrom(iv), additionalData: A.jsArrayBufferFrom(J.sublist$2$x(buffer, 0, headerLength))}, secretKey, A.jsArrayBufferFrom(J.sublist$2$x(buffer, headerLength, J.get$length$asx(buffer)))), type$.ByteBuffer), $async$encodeFunction$2); + case 7: + // returning from await. + cipherText = $async$result; + t2 = $.$get$_CopyingBytesBuilder__emptyList(); + finalBuffer = new A._CopyingBytesBuilder(t2); + J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(J.sublist$2$x(buffer, 0, headerLength)))); + J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(cipherText, 0, null)); + J.add$1$ax(finalBuffer, iv); + J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(frameTrailer.buffer, 0, null)); + t1.set$data(frame, A.jsArrayBufferFrom(finalBuffer.toBytes$0())); + J.enqueue$1$x(controller, frame); + if ($async$self.lastError !== B.CryptorError_1) { + $async$self.lastError = B.CryptorError_1; + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__FrameCryptor_kind_A, "state", "ok", "error", "encryption ok"], type$.String, type$.nullable_String)); + } + $async$handler = 2; + // goto after finally + $async$goto = 6; + break; + case 4: + // catch + $async$handler = 3; + $async$exception = $async$currentError; + e = A.unwrapException($async$exception); + if ($async$self.lastError !== B.CryptorError_3) { + $async$self.lastError = B.CryptorError_3; + t1 = $async$self.participantId; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "encryptError", "error", J.toString$0$(e)], type$.String, type$.nullable_String)); + } + // goto after finally + $async$goto = 6; + break; + case 3: + // uncaught + // goto rethrow + $async$goto = 2; + break; + case 6: + // after finally + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + case 2: + // rethrow + return A._asyncRethrow($async$currentError, $async$completer); + } + }); + return A._asyncStartSync($async$encodeFunction$2, $async$completer); + }, + decodeFunction$2(frame, controller) { + return this.decodeFunction$body$FrameCryptor(type$.RTCEncodedFrame._as(frame), type$.TransformStreamDefaultController._as(controller)); + }, + decodeFunction$body$FrameCryptor(frame, controller) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, headerLength, metaData, frameTrailer, ivLength, keyIndex, iv, initialKeySet0, endDecLoop, currentkeySet, newMaterial, finalBuffer, e, t2, t3, t4, t5, t6, t7, endDecLoop0, t8, t9, t10, t11, t12, t13, exception, ratchetCount, t1, buffer, decrypted, initialKeySet, initialKeyIndex, $async$exception, $async$exception1; + var $async$decodeFunction$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$currentError = $async$result; + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start + ratchetCount = 0; + t1 = J.getInterceptor$x(frame); + buffer = A.NativeUint8List_NativeUint8List$view(t1.get$data(frame), 0, null); + decrypted = null; + initialKeySet = null; + initialKeyIndex = $async$self.currentKeyIndex; + if (!$async$self.enabled || J.get$length$asx(buffer) === 0) { + J.enqueue$1$x(controller, frame); + // goto return + $async$goto = 1; + break; + } + t2 = $async$self.keyOptions; + t3 = t2.uncryptedMagicBytes; + if (t3 != null) { + t4 = J.get$length$asx(buffer); + t5 = t3.length; + t6 = t5 + 1; + if (t4 >= t6) + if (A.IterableBase_iterableToFullString(J.sublist$2$x(buffer, J.get$length$asx(buffer) - t6, t5), "[", "]") === A.IterableBase_iterableToFullString(t3, "[", "]")) { + t2 = $.$get$_CopyingBytesBuilder__emptyList(); + finalBuffer = new A._CopyingBytesBuilder(t2); + finalBuffer.add$1(0, new Uint8Array(A._ensureNativeList(J.sublist$2$x(buffer, 0, J.get$length$asx(buffer) - t6)))); + t1.set$data(frame, A.jsArrayBufferFrom(finalBuffer.toBytes$0())); + J.enqueue$1$x(controller, frame); + // goto return + $async$goto = 1; + break; + } + } + $async$handler = 4; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + headerLength = t3 === "video" ? $async$self.getUnencryptedBytes$2(frame, $async$self.codec) : 1; + metaData = t1.getMetadata$0(frame); + frameTrailer = J.sublist$1$x(buffer, J.get$length$asx(buffer) - 2); + ivLength = J.$index$asx(frameTrailer, 0); + keyIndex = J.$index$asx(frameTrailer, 1); + t4 = J.get$length$asx(buffer); + t5 = ivLength; + if (typeof t5 !== "number") { + $async$returnValue = A.iae(t5); + // goto return + $async$goto = 1; + break; + } + iv = J.sublist$2$x(buffer, t4 - t5 - 2, J.get$length$asx(buffer) - 2); + initialKeySet0 = $async$self.getKeySet$1(keyIndex); + initialKeyIndex = keyIndex; + if (initialKeySet0 == null) { + if ($async$self.lastError !== B.CryptorError_5) { + $async$self.lastError = B.CryptorError_5; + t1 = $async$self.participantId; + t2 = $async$self.trackId; + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", $async$self.__FrameCryptor_kind_A, "state", "missingKey", "error", "Missing key for track " + A.S(t2)], type$.String, type$.nullable_String)); + } + J.enqueue$1$x(controller, frame); + // goto return + $async$goto = 1; + break; + } + endDecLoop = false; + currentkeySet = initialKeySet0; + t3 = t2.ratchetSalt, t2 = t2.ratchetWindowSize, t4 = type$.ByteBuffer, t5 = type$.String, t6 = type$.nullable_String, t7 = $async$self.worker, endDecLoop0 = t2 <= 0; + case 7: + // for condition + if (!!A.boolConversionCheck(endDecLoop)) { + // goto after for + $async$goto = 8; + break; + } + $async$handler = 10; + t8 = buffer; + t8 = {name: "AES-GCM", iv: A.jsArrayBufferFrom(iv), additionalData: A.jsArrayBufferFrom(new Uint8Array(t8.subarray(0, A._checkValidRange(0, A._asIntQ(headerLength), J.get$length$asx(t8)))))}; + t9 = currentkeySet.encryptionKey; + t10 = buffer; + t11 = J.get$length$asx(buffer); + t12 = ivLength; + if (typeof t12 !== "number") { + $async$returnValue = A.iae(t12); + // goto return + $async$goto = 1; + break; + } + t13 = A._asInt(headerLength); + $async$goto = 13; + return A._asyncAwait(A.promiseToFuture(self.crypto.subtle.decrypt(t8, t9, A.jsArrayBufferFrom(new Uint8Array(t10.subarray(t13, A._checkValidRange(t13, A._asIntQ(t11 - t12 - 2), J.get$length$asx(t10)))))), t4), $async$decodeFunction$2); + case 13: + // returning from await. + decrypted = $async$result; + $async$goto = decrypted != null && !J.$eq$(currentkeySet, initialKeySet0) ? 14 : 15; + break; + case 14: + // then + $async$goto = 16; + return A._asyncAwait($async$self.setKeySetFromMaterial$2(currentkeySet, initialKeyIndex), $async$decodeFunction$2); + case 16: + // returning from await. + case 15: + // join + endDecLoop = true; + t8 = $async$self.lastError; + if (t8 !== B.CryptorError_1) + if (t8 !== B.CryptorError_6) { + t8 = ratchetCount; + if (typeof t8 !== "number") { + $async$returnValue = t8.$gt(); + // goto return + $async$goto = 1; + break; + } + t8 = t8 > 0; + } else + t8 = false; + else + t8 = false; + if (t8) { + A.printString("KeyRatcheted: ssrc " + A.S(J.get$synchronizationSource$x(metaData)) + " timestamp " + A.S(t1.get$timestamp(frame)) + " ratchetCount " + A.S(ratchetCount) + " participantId: " + A.S($async$self.participantId)); + A.printString("ratchetKey: lastError != CryptorError.kKeyRatcheted, reset state to kKeyRatcheted"); + $async$self.lastError = B.CryptorError_6; + B.DedicatedWorkerGlobalScope_methods.postMessage$1(t7, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__FrameCryptor_kind_A, "state", "keyRatcheted", "error", "Key ratcheted ok"], t5, t6)); + } + $async$handler = 4; + // goto after finally + $async$goto = 12; + break; + case 10: + // catch + $async$handler = 9; + $async$exception = $async$currentError; + $async$self.lastError = B.CryptorError_7; + t8 = ratchetCount; + if (typeof t8 !== "number") { + $async$returnValue = t8.$ge(); + // goto return + $async$goto = 1; + break; + } + endDecLoop = t8 >= t2 || endDecLoop0; + if (A.boolConversionCheck(endDecLoop)) + throw $async$exception; + $async$goto = 17; + return A._asyncAwait($async$self.ratchetMaterial$1(currentkeySet.material), $async$decodeFunction$2); + case 17: + // returning from await. + newMaterial = $async$result; + $async$goto = 18; + return A._asyncAwait($async$self.deriveKeys$2(newMaterial, t3), $async$decodeFunction$2); + case 18: + // returning from await. + currentkeySet = $async$result; + t8 = ratchetCount; + if (typeof t8 !== "number") { + $async$returnValue = t8.$add(); + // goto return + $async$goto = 1; + break; + } + ratchetCount = t8 + 1; + // goto after finally + $async$goto = 12; + break; + case 9: + // uncaught + // goto catch + $async$goto = 4; + break; + case 12: + // after finally + // goto for condition + $async$goto = 7; + break; + case 8: + // after for + t2 = $.$get$_CopyingBytesBuilder__emptyList(); + finalBuffer = new A._CopyingBytesBuilder(t2); + J.add$1$ax(finalBuffer, new Uint8Array(A._ensureNativeList(J.sublist$2$x(buffer, 0, headerLength)))); + t2 = decrypted; + t2.toString; + J.add$1$ax(finalBuffer, A.NativeUint8List_NativeUint8List$view(t2, 0, null)); + t1.set$data(frame, A.jsArrayBufferFrom(finalBuffer.toBytes$0())); + J.enqueue$1$x(controller, frame); + if ($async$self.lastError !== B.CryptorError_1) { + $async$self.lastError = B.CryptorError_1; + B.DedicatedWorkerGlobalScope_methods.postMessage$1(t7, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", $async$self.participantId, "trackId", $async$self.trackId, "kind", $async$self.__FrameCryptor_kind_A, "state", "ok", "error", "decryption ok"], t5, t6)); + } + $async$handler = 2; + // goto after finally + $async$goto = 6; + break; + case 4: + // catch + $async$handler = 3; + $async$exception1 = $async$currentError; + e = A.unwrapException($async$exception1); + if ($async$self.lastError !== B.CryptorError_2) { + $async$self.lastError = B.CryptorError_2; + t1 = $async$self.participantId; + t2 = $async$self.trackId; + t3 = $async$self.__FrameCryptor_kind_A; + t3 === $ && A.throwLateFieldNI("kind"); + B.DedicatedWorkerGlobalScope_methods.postMessage$1($async$self.worker, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorState", "participantId", t1, "trackId", t2, "kind", t3, "state", "decryptError", "error", J.toString$0$(e)], type$.String, type$.nullable_String)); + } + $async$goto = initialKeySet != null ? 19 : 20; + break; + case 19: + // then + $async$goto = 21; + return A._asyncAwait($async$self.setKeySetFromMaterial$2(initialKeySet, initialKeyIndex), $async$decodeFunction$2); + case 21: + // returning from await. + case 20: + // join + // goto after finally + $async$goto = 6; + break; + case 3: + // uncaught + // goto rethrow + $async$goto = 2; + break; + case 6: + // after finally + case 1: + // return + return A._asyncReturn($async$returnValue, $async$completer); + case 2: + // rethrow + return A._asyncRethrow($async$currentError, $async$completer); + } + }); + return A._asyncStartSync($async$decodeFunction$2, $async$completer); + }, + get$participantId(receiver) { + return this.participantId; + }, + get$trackId(receiver) { + return this.trackId; + }, + get$codec(receiver) { + return this.codec; + } + }; + A.FrameCryptor_ratchetKey_closure.prototype = { + call$1(newMaterial) { + var t1 = this.$this; + t1.deriveKeys$2(type$.CryptoKey._as(newMaterial), t1.keyOptions.ratchetSalt).then$1$1(new A.FrameCryptor_ratchetKey__closure(t1, this.keyIndex), type$.Null); + }, + $signature: 24 + }; + A.FrameCryptor_ratchetKey__closure.prototype = { + call$1(newKeySet) { + var t1, t2; + type$.KeySet._as(newKeySet); + t1 = this.$this; + t2 = this.keyIndex; + t1.setKeySetFromMaterial$2(newKeySet, t2 == null ? t1.currentKeyIndex : t2).then$1$1(new A.FrameCryptor_ratchetKey___closure(t1), type$.Null); + }, + $signature: 25 + }; + A.FrameCryptor_ratchetKey___closure.prototype = { + call$1(_) { + var t1 = this.$this; + t1._ratchetCompleter.complete$0(0); + t1._ratchetCompleter = null; + }, + $signature: 26 + }; + A.TransformMessage.prototype = {}; + A.EnableTransformMessage.prototype = {}; + A.RemoveTransformMessage.prototype = {}; + A.main_closure.prototype = { + call$1($event) { + var t1, options, t2, kind, participantId, trackId, codec, msgType, cryptor; + A.print("got transform event"); + t1 = type$.JavaScriptObject._as(type$.RTCTransformEvent._as($event).transformer); + t1.handled = true; + options = t1.options; + t2 = J.getInterceptor$x(options); + kind = t2.get$kind(options); + participantId = t2.get$participantId(options); + trackId = t2.get$trackId(options); + codec = t2.get$codec(options); + msgType = t2.get$msgType(options); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure8(trackId), type$.FrameCryptor); + if (cryptor == null) { + t2 = self.self; + A._asStringQ(participantId); + A._asStringQ(trackId); + cryptor = A.FrameCryptor$($.$get$keyProviderOptions(), participantId, trackId, t2); + B.JSArray_methods.add$1($.participantCryptors, cryptor); + } + A._asString(msgType); + t2 = type$.ReadableStream._as(t1.readable); + t1 = type$.WritableStream._as(t1.writable); + A._asString(trackId); + A._asString(kind); + cryptor.setupTransform$6$codec$kind$operation$readable$trackId$writable(A._asStringQ(codec), kind, msgType, t2, trackId, t1); + }, + $signature: 3 + }; + A.main__closure8.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId == this.trackId; + }, + $signature: 1 + }; + A.main_closure0.prototype = { + call$1(e) { + var copy, msgType, options, t3, t4, enabled, participantId, cryptors, line, _i, cryptor, kind, exist, trackId, readable, writable, key, keyIndex, c, keySet, codec, + _s11_ = "ratchetSalt", + _s13_ = "participantId", + _s53_ = "]: lastError != CryptorError.kOk, reset state to kNew", + _s7_ = "trackId", + _s8_ = "keyIndex", + t1 = type$.MessageEvent._as(e).data, + t2 = new A._AcceptStructuredCloneDart2Js([], []); + t2.mustCopy = true; + copy = t2.walk$1(t1); + t1 = J.getInterceptor$asx(copy); + msgType = t1.$index(copy, "msgType"); + switch (msgType) { + case "init": + options = t1.$index(copy, "keyOptions"); + t1 = J.getInterceptor$asx(options); + t2 = A._asBool(t1.$index(options, "sharedKey")); + t3 = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t1.$index(options, _s11_))))); + t4 = A._asInt(t1.$index(options, "ratchetWindowSize")); + $.keyProviderOptions = new A.KeyOptions(t2, t3, t4, t1.$index(options, _s11_) != null ? new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t1.$index(options, "uncryptedMagicBytes"))))) : null); + A.print("worker: init with keyOptions " + ("KeyOptions{sharedKey: " + t2 + ", ratchetWindowSize: " + t4 + "}")); + break; + case "enable": + enabled = A._asBool(t1.$index(copy, "enabled")); + participantId = A._asString(t1.$index(copy, _s13_)); + t1 = "" + enabled; + A.print("worker: set enable " + t1 + " for participantId " + participantId); + t2 = $.participantCryptors; + t3 = A._arrayInstanceType(t2); + t4 = t3._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t2, t3._eval$1("bool(1)")._as(new A.main__closure(participantId)), t4), true, t4._eval$1("Iterable.E")); + for (t2 = cryptors.length, line = "setEnabled[" + t1 + _s53_, _i = 0; _i < t2; ++_i) { + cryptor = cryptors[_i]; + if (cryptor.lastError !== B.CryptorError_1) { + A.printString(line); + cryptor.lastError = B.CryptorError_0; + } + cryptor.enabled = enabled; + } + J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorEnabled", "participantId", participantId, "enable", enabled], type$.String, type$.Object)); + break; + case "decode": + case "encode": + kind = t1.$index(copy, "kind"); + exist = A._asBool(t1.$index(copy, "exist")); + participantId = A._asString(t1.$index(copy, _s13_)); + trackId = t1.$index(copy, _s7_); + readable = type$.ReadableStream._as(t1.$index(copy, "readableStream")); + writable = type$.WritableStream._as(t1.$index(copy, "writableStream")); + A.print("worker: got " + A.S(msgType) + ", kind " + A.S(kind) + ", trackId " + A.S(trackId) + ", participantId " + participantId + ", " + B.Type_JSObject_8k0.toString$0(0) + " " + B.Type_JSObject_8k0.toString$0(0) + "}"); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure0(trackId), type$.FrameCryptor); + if (cryptor == null) { + t1 = self.self; + A._asStringQ(trackId); + cryptor = A.FrameCryptor$($.$get$keyProviderOptions(), participantId, trackId, t1); + B.JSArray_methods.add$1($.participantCryptors, cryptor); + } + if (!exist) { + A._asString(msgType); + A._asString(trackId); + cryptor.setupTransform$5$kind$operation$readable$trackId$writable(A._asString(kind), msgType, readable, trackId, writable); + } + if (cryptor.lastError !== B.CryptorError_1) { + A.print("setParticipantId: lastError != CryptorError.kOk, reset state to kNew"); + cryptor.lastError = B.CryptorError_0; + } + cryptor.participantId = participantId; + J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorSetup", "participantId", participantId, "trackId", trackId, "exist", exist, "operation", msgType], type$.String, type$.dynamic)); + cryptor.lastError = B.CryptorError_0; + break; + case "removeTransform": + trackId = A._asString(t1.$index(copy, _s7_)); + A.print("worker: removing trackId " + trackId); + t1 = $.participantCryptors; + t2 = A._arrayInstanceType(t1)._eval$1("bool(1)")._as(new A.main__closure1(trackId)); + if (!!t1.fixed$length) + A.throwExpression(A.UnsupportedError$("removeWhere")); + B.JSArray_methods._removeWhere$2(t1, t2, true); + break; + case "setKey": + key = new Uint8Array(A._ensureNativeList(B.C_Base64Decoder.convert$1(A._asString(t1.$index(copy, "key"))))); + keyIndex = t1.$index(copy, _s8_); + participantId = A._asString(t1.$index(copy, _s13_)); + A.print("worker: setup key for participant " + participantId); + if ($.$get$keyProviderOptions().sharedKey) { + for (t1 = $.participantCryptors, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) + t1[_i].setKey$2(A._asInt(keyIndex), key); + return; + } + t1 = $.participantCryptors; + t2 = A._arrayInstanceType(t1); + t3 = t2._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure2(participantId)), t3), true, t3._eval$1("Iterable.E")); + for (t1 = cryptors.length, _i = 0; _i < t1; ++_i) + cryptors[_i].setKey$2(A._asInt(keyIndex), key); + break; + case "ratchetKey": + keyIndex = t1.$index(copy, _s8_); + participantId = A._asString(t1.$index(copy, _s13_)); + A.print("worker: ratchetKey for participant " + participantId + ", keyIndex " + A.S(keyIndex)); + t1 = $.participantCryptors; + t2 = A._arrayInstanceType(t1); + t3 = t2._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure3(participantId)), t3), true, t3._eval$1("Iterable.E")); + for (t1 = cryptors.length, t2 = type$.Null, _i = 0; _i < t1; ++_i) { + c = cryptors[_i]; + A._asIntQ(keyIndex); + t3 = c.cryptoKeyRing; + t4 = keyIndex == null ? c.currentKeyIndex : keyIndex; + if (!(t4 >= 0 && t4 < 16)) + return A.ioore(t3, t4); + keySet = t3[t4]; + c.ratchetKey$1(keyIndex).then$1$1(new A.main__closure4(c, keySet, participantId), t2); + } + break; + case "setKeyIndex": + keyIndex = t1.$index(copy, "index"); + participantId = A._asString(t1.$index(copy, _s13_)); + A.print("worker: setup key index for participant " + participantId); + t1 = $.participantCryptors; + t2 = A._arrayInstanceType(t1); + t3 = t2._eval$1("WhereIterable<1>"); + cryptors = A.List_List$of(new A.WhereIterable(t1, t2._eval$1("bool(1)")._as(new A.main__closure5(participantId)), t3), true, t3._eval$1("Iterable.E")); + for (t1 = cryptors.length, _i = 0; _i < t1; ++_i) { + c = cryptors[_i]; + A._asInt(keyIndex); + if (c.lastError !== B.CryptorError_1) { + A.printString("setKeyIndex: lastError != CryptorError.kOk, reset state to kNew"); + c.lastError = B.CryptorError_0; + } + c.currentKeyIndex = keyIndex; + } + break; + case "updateCodec": + codec = A._asString(t1.$index(copy, "codec")); + trackId = A._asString(t1.$index(copy, _s7_)); + A.print("worker: update codec for trackId " + trackId + ", codec " + codec); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure6(trackId), type$.FrameCryptor); + if (cryptor != null) { + if (cryptor.lastError !== B.CryptorError_1) { + A.print("updateCodec[" + codec + _s53_); + cryptor.lastError = B.CryptorError_0; + } + cryptor.codec = codec; + } + break; + case "dispose": + trackId = A._asString(t1.$index(copy, _s7_)); + A.print("worker: dispose trackId " + trackId); + cryptor = A.IterableExtension_firstWhereOrNull($.participantCryptors, new A.main__closure7(trackId), type$.FrameCryptor); + if (cryptor != null) { + cryptor.lastError = B.CryptorError_8; + J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "cryptorDispose", "participantId", cryptor.participantId, "trackId", trackId], type$.String, type$.nullable_String)); + } + break; + default: + A.print("worker: unknown message kind " + A.S(copy)); + } + }, + $signature: 27 + }; + A.main__closure.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).participantId === this.participantId; + }, + $signature: 1 + }; + A.main__closure0.prototype = { + call$1(c) { + var t1 = type$.FrameCryptor._as(c).trackId, + t2 = this.trackId; + return t1 == null ? t2 == null : t1 === t2; + }, + $signature: 1 + }; + A.main__closure1.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId === this.trackId; + }, + $signature: 1 + }; + A.main__closure2.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).participantId === this.participantId; + }, + $signature: 1 + }; + A.main__closure3.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).participantId === this.participantId; + }, + $signature: 1 + }; + A.main__closure4.prototype = { + call$1(_) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.Null), + $async$self = this, t1, newKey; + var $async$call$1 = 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 + t1 = $async$self.c; + $async$goto = 2; + return A._asyncAwait(t1.ratchet$2($async$self.keySet.material, $.$get$keyProviderOptions().ratchetSalt), $async$call$1); + case 2: + // returning from await. + newKey = $async$result; + J.postMessage$1$x(self.self, A.LinkedHashMap_LinkedHashMap$_literal(["type", "ratchetKey", "participantId", $async$self.participantId, "trackId", t1.trackId, "key", B.C_Base64Encoder.convert$1(type$.Base64Codec._eval$1("Codec.S")._as(newKey))], type$.String, type$.nullable_String)); + // implicit return + return A._asyncReturn(null, $async$completer); + } + }); + return A._asyncStartSync($async$call$1, $async$completer); + }, + $signature: 28 + }; + A.main__closure5.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).participantId === this.participantId; + }, + $signature: 1 + }; + A.main__closure6.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId === this.trackId; + }, + $signature: 1 + }; + A.main__closure7.prototype = { + call$1(c) { + return type$.FrameCryptor._as(c).trackId === this.trackId; + }, + $signature: 1 + }; + (function aliases() { + var _ = J.Interceptor.prototype; + _.super$Interceptor$toString = _.toString$0; + _ = J.LegacyJavaScriptObject.prototype; + _.super$LegacyJavaScriptObject$toString = _.toString$0; + _ = A.ListMixin.prototype; + _.super$ListMixin$setRange = _.setRange$4; + })(); + (function installTearOffs() { + var _static_1 = hunkHelpers._static_1, + _static_0 = hunkHelpers._static_0, + _instance_2_u = hunkHelpers._instance_2u; + _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 5); + _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 5); + _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 5); + _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0); + var _; + _instance_2_u(_ = A.FrameCryptor.prototype, "get$encodeFunction", "encodeFunction$2", 7); + _instance_2_u(_, "get$decodeFunction", "decodeFunction$2", 7); + })(); + (function inheritance() { + var _mixin = hunkHelpers.mixin, + _inherit = hunkHelpers.inherit, + _inheritMany = hunkHelpers.inheritMany; + _inherit(A.Object, null); + _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A._CopyingBytesBuilder, A.Error, A._ListBase_Object_ListMixin, A.SentinelValue, A.Iterable, A.ListIterator, A.Iterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A.MapView, A.ConstantMap, A.JSInvocationMirror, A.Closure, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.MapMixin, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A.StreamSubscription, A.StreamTransformerBase, A._StreamIterator, A._Zone, A._HashMapKeyIterator, A.ListMixin, A._UnmodifiableMapMixin, A.Codec, A._Base64Encoder, A._Base64Decoder, A.DateTime, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.Null, A._StringStackTrace, A.StringBuffer, A.CssStyleDeclarationBase, A.EventStreamProvider, A.ImmutableListMixin, A.FixedSizeListIterator, A._StructuredClone, A._AcceptStructuredClone, A.NullRejectionException, A._JSSecureRandom, A.KeyOptions, A.KeySet, A.FrameCryptor]); + _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSArray, J.JSNumber, J.JSString, A.NativeByteBuffer, A.NativeTypedData]); + _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, A.EventTarget, A.AccessibleNodeList, A.Blob, A.CryptoKey, A.CssTransformComponent, A.CssRule, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleValue, A.DataTransferItem, A.DataTransferItemList, A.DomException, A._DomRectList_JavaScriptObject_ListMixin, A.DomRectReadOnly, A._DomStringList_JavaScriptObject_ListMixin, A.DomTokenList, A.Event, A._FileList_JavaScriptObject_ListMixin, A.Gamepad, A.History, A._HtmlCollection_JavaScriptObject_ListMixin, A.ImageData, A.Location, A.MediaDeviceInfo, A.MediaList, A._MidiInputMap_JavaScriptObject_MapMixin, A._MidiOutputMap_JavaScriptObject_MapMixin, A.MimeType, A._MimeTypeArray_JavaScriptObject_ListMixin, A._NodeList_JavaScriptObject_ListMixin, A.Plugin, A._PluginArray_JavaScriptObject_ListMixin, A._RtcStatsReport_JavaScriptObject_MapMixin, A.SharedArrayBuffer, A.SpeechGrammar, A._SpeechGrammarList_JavaScriptObject_ListMixin, A.SpeechRecognitionResult, A._Storage_JavaScriptObject_MapMixin, A.StyleSheet, A._TextTrackCueList_JavaScriptObject_ListMixin, A.TimeRanges, A.Touch, A._TouchList_JavaScriptObject_ListMixin, A.TrackDefaultList, A.Url, A.VideoTrack, A.__CssRuleList_JavaScriptObject_ListMixin, A.__GamepadList_JavaScriptObject_ListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin, A.Length, A._LengthList_JavaScriptObject_ListMixin, A.Number, A._NumberList_JavaScriptObject_ListMixin, A.PointList, A._StringList_JavaScriptObject_ListMixin, A.Transform, A._TransformList_JavaScriptObject_ListMixin, A.AudioBuffer, A._AudioParamMap_JavaScriptObject_MapMixin, A.AudioTrack]); + _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A.WritableStream, A.ReadableStream, A.TransformStream, A.TransformStreamDefaultController, A.EncodedStreams, A.RTCEncodedFrame, A.RTCEncodedAudioFrame, A.RTCEncodedVideoFrame, A.RTCEncodedFrameMetadata, A.RTCEncodedAudioFrameMetadata, A.RTCEncodedVideoFrameMetadata, A.RTCTransformEvent, A.RTCRtpScriptTransformer, A.RTCRtpScriptTransform, A.Promise, A.Algorithm, A.AesGcmParams, A.TransformMessage, A.EnableTransformMessage, A.RemoveTransformMessage]); + _inherit(J.JSUnmodifiableArray, J.JSArray); + _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]); + _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A.RuntimeError, A.AssertionError, A._Error, A.NullThrownError, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError, A.CyclicInitializationError]); + _inherit(A.ListBase, A._ListBase_Object_ListMixin); + _inherit(A.UnmodifiableListBase, A.ListBase); + _inherit(A.CodeUnits, A.UnmodifiableListBase); + _inheritMany(A.Iterable, [A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A._ConstantMapKeyIterable]); + _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.LinkedHashMapKeyIterable, A._HashMapKeyIterable]); + _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable]); + _inherit(A.EfficientLengthMappedIterable, A.MappedIterable); + _inheritMany(A.Iterator, [A.MappedIterator, A.WhereIterator]); + _inherit(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A.MapView); + _inherit(A.UnmodifiableMapView, A._UnmodifiableMapView_MapView__UnmodifiableMapMixin); + _inherit(A.ConstantMapView, A.UnmodifiableMapView); + _inherit(A.ConstantStringMap, A.ConstantMap); + _inheritMany(A.Closure, [A.Closure2Args, A.Closure0Args, A.TearOffClosure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_length_closure, A._RootZone_bindUnaryCallbackGuarded_closure, A._EventStreamSubscription_closure, A._convertDataTree__convert, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.FrameCryptor_ratchetKey_closure, A.FrameCryptor_ratchetKey__closure, A.FrameCryptor_ratchetKey___closure, A.main_closure, A.main__closure8, A.main_closure0, A.main__closure, A.main__closure0, A.main__closure1, A.main__closure2, A.main__closure3, A.main__closure4, A.main__closure5, A.main__closure6, A.main__closure7]); + _inheritMany(A.Closure2Args, [A.Primitives_functionNoSuchMethod_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A._Future__chainForeignFuture_closure0, A.MapBase_mapToString_closure, A.NoSuchMethodError_toString_closure, A.MidiInputMap_keys_closure, A.MidiOutputMap_keys_closure, A.RtcStatsReport_keys_closure, A.Storage_keys_closure, A._StructuredClone_walk_closure, A._StructuredClone_walk_closure0, A._AcceptStructuredClone_walk_closure, A.AudioParamMap_keys_closure]); + _inherit(A.NullError, A.TypeError); + _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]); + _inherit(A._AssertionError, A.AssertionError); + _inherit(A.MapBase, A.MapMixin); + _inheritMany(A.MapBase, [A.JsLinkedHashMap, A._HashMap]); + _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]); + _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]); + _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin); + _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin); + _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin); + _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin); + _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]); + _inherit(A._TypeError, A._Error); + _inheritMany(A.Closure0Args, [A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__asyncCompleteWithValue_closure, A._Future__chainFuture_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._rootHandleError_closure, A._RootZone_bindCallbackGuarded_closure]); + _inherit(A._AsyncCompleter, A._Completer); + _inherit(A._RootZone, A._Zone); + _inherit(A._IdentityHashMap, A._HashMap); + _inherit(A.Base64Codec, A.Codec); + _inherit(A.Converter, A.StreamTransformerBase); + _inheritMany(A.Converter, [A.Base64Encoder, A.Base64Decoder]); + _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]); + _inheritMany(A.EventTarget, [A.Node, A.WorkerGlobalScope, A.FileWriter, A.MediaStreamTrack, A.MessagePort, A.SourceBuffer, A._SourceBufferList_EventTarget_ListMixin, A.TextTrack, A.TextTrackCue, A._TextTrackList_EventTarget_ListMixin, A.VideoTrackList, A.AudioTrackList, A.BaseAudioContext]); + _inheritMany(A.Node, [A.Element, A.CharacterData]); + _inherit(A.HtmlElement, A.Element); + _inheritMany(A.HtmlElement, [A.AnchorElement, A.AreaElement, A.FormElement, A.SelectElement, A.TrackElement]); + _inherit(A.CssPerspective, A.CssTransformComponent); + _inherit(A.CssStyleDeclaration, A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase); + _inheritMany(A.CssStyleValue, [A.CssTransformValue, A.CssUnparsedValue]); + _inherit(A.DedicatedWorkerGlobalScope, A.WorkerGlobalScope); + _inherit(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomRectList_JavaScriptObject_ListMixin); + _inherit(A.DomRectList, A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._DomStringList_JavaScriptObject_ListMixin); + _inherit(A.DomStringList, A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.File, A.Blob); + _inherit(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A._FileList_JavaScriptObject_ListMixin); + _inherit(A.FileList, A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A._HtmlCollection_JavaScriptObject_ListMixin); + _inherit(A.HtmlCollection, A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.MessageEvent, A.Event); + _inherit(A.MidiInputMap, A._MidiInputMap_JavaScriptObject_MapMixin); + _inherit(A.MidiOutputMap, A._MidiOutputMap_JavaScriptObject_MapMixin); + _inherit(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._MimeTypeArray_JavaScriptObject_ListMixin); + _inherit(A.MimeTypeArray, A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NodeList_JavaScriptObject_ListMixin); + _inherit(A.NodeList, A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A._PluginArray_JavaScriptObject_ListMixin); + _inherit(A.PluginArray, A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.RtcStatsReport, A._RtcStatsReport_JavaScriptObject_MapMixin); + _inherit(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A._SourceBufferList_EventTarget_ListMixin); + _inherit(A.SourceBufferList, A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin); + _inherit(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A._SpeechGrammarList_JavaScriptObject_ListMixin); + _inherit(A.SpeechGrammarList, A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.Storage, A._Storage_JavaScriptObject_MapMixin); + _inherit(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TextTrackCueList_JavaScriptObject_ListMixin); + _inherit(A.TextTrackCueList, A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A._TextTrackList_EventTarget_ListMixin); + _inherit(A.TextTrackList, A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin); + _inherit(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TouchList_JavaScriptObject_ListMixin); + _inherit(A.TouchList, A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__CssRuleList_JavaScriptObject_ListMixin); + _inherit(A._CssRuleList, A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._DomRect, A.DomRectReadOnly); + _inherit(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__GamepadList_JavaScriptObject_ListMixin); + _inherit(A._GamepadList, A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.__NamedNodeMap_JavaScriptObject_ListMixin); + _inherit(A._NamedNodeMap, A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin); + _inherit(A._SpeechRecognitionResultList, A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.__StyleSheetList_JavaScriptObject_ListMixin); + _inherit(A._StyleSheetList, A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._EventStream, A.Stream); + _inherit(A._EventStreamSubscription, A.StreamSubscription); + _inherit(A._StructuredCloneDart2Js, A._StructuredClone); + _inherit(A._AcceptStructuredCloneDart2Js, A._AcceptStructuredClone); + _inherit(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A._LengthList_JavaScriptObject_ListMixin); + _inherit(A.LengthList, A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A._NumberList_JavaScriptObject_ListMixin); + _inherit(A.NumberList, A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A._StringList_JavaScriptObject_ListMixin); + _inherit(A.StringList, A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A._TransformList_JavaScriptObject_ListMixin); + _inherit(A.TransformList, A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin); + _inherit(A.AudioParamMap, A._AudioParamMap_JavaScriptObject_MapMixin); + _inherit(A.OfflineAudioContext, A.BaseAudioContext); + _inherit(A.CryptorError, A._Enum); + _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin); + _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListMixin); + _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin); + _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListMixin); + _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin); + _mixin(A._ListBase_Object_ListMixin, A.ListMixin); + _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin); + _mixin(A._CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase, A.CssStyleDeclarationBase); + _mixin(A._DomRectList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._DomStringList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._FileList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._FileList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._HtmlCollection_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._MidiInputMap_JavaScriptObject_MapMixin, A.MapMixin); + _mixin(A._MidiOutputMap_JavaScriptObject_MapMixin, A.MapMixin); + _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._NodeList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._NodeList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._PluginArray_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._RtcStatsReport_JavaScriptObject_MapMixin, A.MapMixin); + _mixin(A._SourceBufferList_EventTarget_ListMixin, A.ListMixin); + _mixin(A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._Storage_JavaScriptObject_MapMixin, A.MapMixin); + _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._TextTrackList_EventTarget_ListMixin, A.ListMixin); + _mixin(A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._TouchList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._TouchList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A.__CssRuleList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A.__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A.__GamepadList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A.__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A.__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A.__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A.__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._LengthList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._LengthList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._NumberList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._NumberList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._StringList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._StringList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._TransformList_JavaScriptObject_ListMixin, A.ListMixin); + _mixin(A._TransformList_JavaScriptObject_ListMixin_ImmutableListMixin, A.ImmutableListMixin); + _mixin(A._AudioParamMap_JavaScriptObject_MapMixin, A.MapMixin); + })(); + var init = { + typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []}, + mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"}, + mangledNames: {}, + types: ["~()", "bool(FrameCryptor)", "~(String,@)", "Null(@)", "~(@)", "~(~())", "Null()", "Future<~>(RTCEncodedFrame,TransformStreamDefaultController)", "@(@)", "@(@,String)", "@(String)", "Null(~())", "Null(@,StackTrace)", "~(int,@)", "Null(Object,StackTrace)", "_Future<@>(@)", "~(Object?,Object?)", "~(Symbol0,@)", "~(String,String)", "~(Event)", "~(@,@)", "Null(@,@)", "@(@,@)", "Object?(Object?)", "Null(CryptoKey)", "Null(KeySet)", "Null(~)", "~(MessageEvent)", "Future(~)"], + interceptorsByTag: null, + leafTags: null, + arrayRti: Symbol("$ti") + }; + A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","WritableStream":"LegacyJavaScriptObject","ReadableStream":"LegacyJavaScriptObject","TransformStreamDefaultController":"LegacyJavaScriptObject","RTCEncodedFrame":"LegacyJavaScriptObject","TransformStream":"LegacyJavaScriptObject","EncodedStreams":"LegacyJavaScriptObject","RTCEncodedAudioFrame":"LegacyJavaScriptObject","RTCEncodedVideoFrame":"LegacyJavaScriptObject","RTCEncodedFrameMetadata":"LegacyJavaScriptObject","RTCEncodedAudioFrameMetadata":"LegacyJavaScriptObject","RTCEncodedVideoFrameMetadata":"LegacyJavaScriptObject","RTCTransformEvent":"LegacyJavaScriptObject","RTCRtpScriptTransformer":"LegacyJavaScriptObject","RTCRtpScriptTransform":"LegacyJavaScriptObject","Promise":"LegacyJavaScriptObject","Algorithm":"LegacyJavaScriptObject","AesGcmParams":"LegacyJavaScriptObject","TransformMessage":"LegacyJavaScriptObject","EnableTransformMessage":"LegacyJavaScriptObject","RemoveTransformMessage":"LegacyJavaScriptObject","KeyframeEffect":"JavaScriptObject","KeyframeEffectReadOnly":"JavaScriptObject","AnimationEffectReadOnly":"JavaScriptObject","AbortPaymentEvent":"Event","ExtendableEvent":"Event","AudioContext":"BaseAudioContext","AbsoluteOrientationSensor":"EventTarget","OrientationSensor":"EventTarget","Sensor":"EventTarget","MathMLElement":"Element","AudioElement":"HtmlElement","MediaElement":"HtmlElement","HtmlDocument":"Node","Document":"Node","VttCue":"TextTrackCue","ServiceWorkerGlobalScope":"WorkerGlobalScope","CDataSection":"CharacterData","Text":"CharacterData","HtmlFormControlsCollection":"HtmlCollection","CssCharsetRule":"CssRule","CssMatrixComponent":"CssTransformComponent","CssStyleSheet":"StyleSheet","CssurlImageValue":"CssStyleValue","CssImageValue":"CssStyleValue","CssResourceValue":"CssStyleValue","CanvasCaptureMediaStreamTrack":"MediaStreamTrack","NativeFloat32List":"NativeTypedArrayOfDouble","JSBool":{"bool":[]},"JSNull":{"Null":[]},"LegacyJavaScriptObject":{"JavaScriptObject":[],"JSObject":[],"WritableStream":[],"ReadableStream":[],"TransformStreamDefaultController":[],"RTCEncodedFrame":[],"RTCTransformEvent":[],"Algorithm":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"JSIndexable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"JSIndexable":["1"]},"ArrayIterator":{"Iterator":["1"]},"JSNumber":{"double":[],"num":[]},"JSInt":{"double":[],"int":[],"num":[]},"JSNumNotInt":{"double":[],"num":[]},"JSString":{"String":[],"JSIndexable":["@"]},"LateError":{"Error":[]},"CodeUnits":{"ListMixin":["int"],"UnmodifiableListMixin":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListMixin.E":"int","UnmodifiableListMixin.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1","ListIterable.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"],"Iterable.E":"2","ListIterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"WhereIterator":{"Iterator":["1"]},"UnmodifiableListBase":{"ListMixin":["1"],"UnmodifiableListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_ConstantMapKeyIterable":{"Iterable":["1"],"Iterable.E":"1"},"JSInvocationMirror":{"Invocation":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"RuntimeError":{"Error":[]},"_AssertionError":{"Error":[]},"JsLinkedHashMap":{"MapMixin":["1","2"],"LinkedHashMap":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"LinkedHashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"LinkedHashMapKeyIterator":{"Iterator":["1"]},"NativeByteBuffer":{"ByteBuffer":[]},"NativeByteData":{"NativeTypedData":[],"ByteData":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"],"NativeTypedData":[],"JSIndexable":["1"]},"NativeTypedArrayOfDouble":{"NativeTypedArray":["double"],"ListMixin":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"NativeTypedData":[],"EfficientLengthIterable":["double"],"JSIndexable":["double"],"Iterable":["double"],"FixedLengthListMixin":["double"],"ListMixin.E":"double"},"NativeTypedArrayOfInt":{"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"]},"NativeInt16List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"NativeTypedArray":["int"],"ListMixin":["int"],"Uint8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"NativeTypedData":[],"EfficientLengthIterable":["int"],"JSIndexable":["int"],"Iterable":["int"],"FixedLengthListMixin":["int"],"ListMixin.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"_Future":{"Future":["1"]},"_AsyncAwaitCompleter":{"Completer":["1"]},"AsyncError":{"Error":[]},"_Completer":{"Completer":["1"]},"_AsyncCompleter":{"_Completer":["1"],"Completer":["1"]},"_Zone":{"Zone":[]},"_RootZone":{"_Zone":[],"Zone":[]},"_HashMap":{"MapMixin":["1","2"],"Map":["1","2"]},"_IdentityHashMap":{"_HashMap":["1","2"],"MapMixin":["1","2"],"Map":["1","2"],"MapMixin.K":"1","MapMixin.V":"2"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_HashMapKeyIterator":{"Iterator":["1"]},"ListBase":{"ListMixin":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"MapMixin":["1","2"],"Map":["1","2"]},"MapMixin":{"Map":["1","2"]},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":["1","2"],"MapView":["1","2"],"_UnmodifiableMapMixin":["1","2"],"Map":["1","2"]},"Base64Codec":{"Codec":["List","String"],"Codec.S":"List"},"double":{"num":[]},"int":{"num":[]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"NullThrownError":{"TypeError":[],"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"CyclicInitializationError":{"Error":[]},"_StringStackTrace":{"StackTrace":[]},"CryptoKey":{"JavaScriptObject":[]},"CssRule":{"JavaScriptObject":[]},"Event":{"JavaScriptObject":[]},"File":{"Blob":[],"JavaScriptObject":[]},"Gamepad":{"JavaScriptObject":[]},"MessageEvent":{"Event":[],"JavaScriptObject":[]},"MimeType":{"JavaScriptObject":[]},"Node":{"EventTarget":[],"JavaScriptObject":[]},"Plugin":{"JavaScriptObject":[]},"SourceBuffer":{"EventTarget":[],"JavaScriptObject":[]},"SpeechGrammar":{"JavaScriptObject":[]},"SpeechRecognitionResult":{"JavaScriptObject":[]},"StyleSheet":{"JavaScriptObject":[]},"TextTrack":{"EventTarget":[],"JavaScriptObject":[]},"TextTrackCue":{"EventTarget":[],"JavaScriptObject":[]},"Touch":{"JavaScriptObject":[]},"HtmlElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"AccessibleNodeList":{"JavaScriptObject":[]},"AnchorElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"AreaElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"Blob":{"JavaScriptObject":[]},"CharacterData":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"CssPerspective":{"JavaScriptObject":[]},"CssStyleDeclaration":{"JavaScriptObject":[]},"CssStyleValue":{"JavaScriptObject":[]},"CssTransformComponent":{"JavaScriptObject":[]},"CssTransformValue":{"JavaScriptObject":[]},"CssUnparsedValue":{"JavaScriptObject":[]},"DataTransferItem":{"JavaScriptObject":[]},"DataTransferItemList":{"JavaScriptObject":[]},"DedicatedWorkerGlobalScope":{"EventTarget":[],"JavaScriptObject":[]},"DomException":{"JavaScriptObject":[]},"DomRectList":{"ListMixin":["Rectangle"],"ImmutableListMixin":["Rectangle"],"List":["Rectangle"],"JavaScriptIndexingBehavior":["Rectangle"],"JavaScriptObject":[],"EfficientLengthIterable":["Rectangle"],"Iterable":["Rectangle"],"JSIndexable":["Rectangle"],"ImmutableListMixin.E":"Rectangle","ListMixin.E":"Rectangle"},"DomRectReadOnly":{"JavaScriptObject":[],"Rectangle":["num"]},"DomStringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptIndexingBehavior":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"JSIndexable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"DomTokenList":{"JavaScriptObject":[]},"Element":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"EventTarget":{"JavaScriptObject":[]},"FileList":{"ListMixin":["File"],"ImmutableListMixin":["File"],"List":["File"],"JavaScriptIndexingBehavior":["File"],"JavaScriptObject":[],"EfficientLengthIterable":["File"],"Iterable":["File"],"JSIndexable":["File"],"ImmutableListMixin.E":"File","ListMixin.E":"File"},"FileWriter":{"EventTarget":[],"JavaScriptObject":[]},"FormElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"History":{"JavaScriptObject":[]},"HtmlCollection":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"ImageData":{"JavaScriptObject":[]},"Location":{"JavaScriptObject":[]},"MediaDeviceInfo":{"JavaScriptObject":[]},"MediaList":{"JavaScriptObject":[]},"MediaStreamTrack":{"EventTarget":[],"JavaScriptObject":[]},"MessagePort":{"EventTarget":[],"JavaScriptObject":[]},"MidiInputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MidiOutputMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"MimeTypeArray":{"ListMixin":["MimeType"],"ImmutableListMixin":["MimeType"],"List":["MimeType"],"JavaScriptIndexingBehavior":["MimeType"],"JavaScriptObject":[],"EfficientLengthIterable":["MimeType"],"Iterable":["MimeType"],"JSIndexable":["MimeType"],"ImmutableListMixin.E":"MimeType","ListMixin.E":"MimeType"},"NodeList":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"PluginArray":{"ListMixin":["Plugin"],"ImmutableListMixin":["Plugin"],"List":["Plugin"],"JavaScriptIndexingBehavior":["Plugin"],"JavaScriptObject":[],"EfficientLengthIterable":["Plugin"],"Iterable":["Plugin"],"JSIndexable":["Plugin"],"ImmutableListMixin.E":"Plugin","ListMixin.E":"Plugin"},"RtcStatsReport":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"SelectElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"SharedArrayBuffer":{"JavaScriptObject":[]},"SourceBufferList":{"ListMixin":["SourceBuffer"],"ImmutableListMixin":["SourceBuffer"],"EventTarget":[],"List":["SourceBuffer"],"JavaScriptIndexingBehavior":["SourceBuffer"],"JavaScriptObject":[],"EfficientLengthIterable":["SourceBuffer"],"Iterable":["SourceBuffer"],"JSIndexable":["SourceBuffer"],"ImmutableListMixin.E":"SourceBuffer","ListMixin.E":"SourceBuffer"},"SpeechGrammarList":{"ListMixin":["SpeechGrammar"],"ImmutableListMixin":["SpeechGrammar"],"List":["SpeechGrammar"],"JavaScriptIndexingBehavior":["SpeechGrammar"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechGrammar"],"Iterable":["SpeechGrammar"],"JSIndexable":["SpeechGrammar"],"ImmutableListMixin.E":"SpeechGrammar","ListMixin.E":"SpeechGrammar"},"Storage":{"JavaScriptObject":[],"MapMixin":["String","String"],"Map":["String","String"],"MapMixin.K":"String","MapMixin.V":"String"},"TextTrackCueList":{"ListMixin":["TextTrackCue"],"ImmutableListMixin":["TextTrackCue"],"List":["TextTrackCue"],"JavaScriptIndexingBehavior":["TextTrackCue"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrackCue"],"Iterable":["TextTrackCue"],"JSIndexable":["TextTrackCue"],"ImmutableListMixin.E":"TextTrackCue","ListMixin.E":"TextTrackCue"},"TextTrackList":{"ListMixin":["TextTrack"],"ImmutableListMixin":["TextTrack"],"EventTarget":[],"List":["TextTrack"],"JavaScriptIndexingBehavior":["TextTrack"],"JavaScriptObject":[],"EfficientLengthIterable":["TextTrack"],"Iterable":["TextTrack"],"JSIndexable":["TextTrack"],"ImmutableListMixin.E":"TextTrack","ListMixin.E":"TextTrack"},"TimeRanges":{"JavaScriptObject":[]},"TouchList":{"ListMixin":["Touch"],"ImmutableListMixin":["Touch"],"List":["Touch"],"JavaScriptIndexingBehavior":["Touch"],"JavaScriptObject":[],"EfficientLengthIterable":["Touch"],"Iterable":["Touch"],"JSIndexable":["Touch"],"ImmutableListMixin.E":"Touch","ListMixin.E":"Touch"},"TrackDefaultList":{"JavaScriptObject":[]},"TrackElement":{"Node":[],"EventTarget":[],"JavaScriptObject":[]},"Url":{"JavaScriptObject":[]},"VideoTrack":{"JavaScriptObject":[]},"VideoTrackList":{"EventTarget":[],"JavaScriptObject":[]},"WorkerGlobalScope":{"EventTarget":[],"JavaScriptObject":[]},"_CssRuleList":{"ListMixin":["CssRule"],"ImmutableListMixin":["CssRule"],"List":["CssRule"],"JavaScriptIndexingBehavior":["CssRule"],"JavaScriptObject":[],"EfficientLengthIterable":["CssRule"],"Iterable":["CssRule"],"JSIndexable":["CssRule"],"ImmutableListMixin.E":"CssRule","ListMixin.E":"CssRule"},"_DomRect":{"JavaScriptObject":[],"Rectangle":["num"]},"_GamepadList":{"ListMixin":["Gamepad?"],"ImmutableListMixin":["Gamepad?"],"List":["Gamepad?"],"JavaScriptIndexingBehavior":["Gamepad?"],"JavaScriptObject":[],"EfficientLengthIterable":["Gamepad?"],"Iterable":["Gamepad?"],"JSIndexable":["Gamepad?"],"ImmutableListMixin.E":"Gamepad?","ListMixin.E":"Gamepad?"},"_NamedNodeMap":{"ListMixin":["Node"],"ImmutableListMixin":["Node"],"List":["Node"],"JavaScriptIndexingBehavior":["Node"],"JavaScriptObject":[],"EfficientLengthIterable":["Node"],"Iterable":["Node"],"JSIndexable":["Node"],"ImmutableListMixin.E":"Node","ListMixin.E":"Node"},"_SpeechRecognitionResultList":{"ListMixin":["SpeechRecognitionResult"],"ImmutableListMixin":["SpeechRecognitionResult"],"List":["SpeechRecognitionResult"],"JavaScriptIndexingBehavior":["SpeechRecognitionResult"],"JavaScriptObject":[],"EfficientLengthIterable":["SpeechRecognitionResult"],"Iterable":["SpeechRecognitionResult"],"JSIndexable":["SpeechRecognitionResult"],"ImmutableListMixin.E":"SpeechRecognitionResult","ListMixin.E":"SpeechRecognitionResult"},"_StyleSheetList":{"ListMixin":["StyleSheet"],"ImmutableListMixin":["StyleSheet"],"List":["StyleSheet"],"JavaScriptIndexingBehavior":["StyleSheet"],"JavaScriptObject":[],"EfficientLengthIterable":["StyleSheet"],"Iterable":["StyleSheet"],"JSIndexable":["StyleSheet"],"ImmutableListMixin.E":"StyleSheet","ListMixin.E":"StyleSheet"},"_EventStream":{"Stream":["1"]},"_EventStreamSubscription":{"StreamSubscription":["1"]},"FixedSizeListIterator":{"Iterator":["1"]},"Length":{"JavaScriptObject":[]},"Number":{"JavaScriptObject":[]},"Transform":{"JavaScriptObject":[]},"LengthList":{"ListMixin":["Length"],"ImmutableListMixin":["Length"],"List":["Length"],"JavaScriptObject":[],"EfficientLengthIterable":["Length"],"Iterable":["Length"],"ImmutableListMixin.E":"Length","ListMixin.E":"Length"},"NumberList":{"ListMixin":["Number"],"ImmutableListMixin":["Number"],"List":["Number"],"JavaScriptObject":[],"EfficientLengthIterable":["Number"],"Iterable":["Number"],"ImmutableListMixin.E":"Number","ListMixin.E":"Number"},"PointList":{"JavaScriptObject":[]},"StringList":{"ListMixin":["String"],"ImmutableListMixin":["String"],"List":["String"],"JavaScriptObject":[],"EfficientLengthIterable":["String"],"Iterable":["String"],"ImmutableListMixin.E":"String","ListMixin.E":"String"},"TransformList":{"ListMixin":["Transform"],"ImmutableListMixin":["Transform"],"List":["Transform"],"JavaScriptObject":[],"EfficientLengthIterable":["Transform"],"Iterable":["Transform"],"ImmutableListMixin.E":"Transform","ListMixin.E":"Transform"},"AudioBuffer":{"JavaScriptObject":[]},"AudioParamMap":{"JavaScriptObject":[],"MapMixin":["String","@"],"Map":["String","@"],"MapMixin.K":"String","MapMixin.V":"@"},"AudioTrack":{"JavaScriptObject":[]},"AudioTrackList":{"EventTarget":[],"JavaScriptObject":[]},"BaseAudioContext":{"EventTarget":[],"JavaScriptObject":[]},"OfflineAudioContext":{"EventTarget":[],"JavaScriptObject":[]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]}}')); + A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"EfficientLengthIterable":1,"UnmodifiableListBase":1,"NativeTypedArray":1,"StreamTransformerBase":2,"ListBase":1,"MapBase":2,"_ListBase_Object_ListMixin":1,"Converter":2,"Promise":1}')); + var string$ = { + 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" + }; + var type$ = (function rtii() { + var findType = A.findType; + return { + Algorithm: findType("Algorithm"), + AsyncError: findType("AsyncError"), + Base64Codec: findType("Base64Codec"), + Blob: findType("Blob"), + ByteBuffer: findType("ByteBuffer"), + ConstantMapView_Symbol_dynamic: findType("ConstantMapView"), + CryptoKey: findType("CryptoKey"), + CssRule: findType("CssRule"), + EfficientLengthIterable_dynamic: findType("EfficientLengthIterable<@>"), + Error: findType("Error"), + Event: findType("Event"), + File: findType("File"), + FileList: findType("FileList"), + FrameCryptor: findType("FrameCryptor"), + Function: findType("Function"), + FutureOr_CryptoKey: findType("CryptoKey/"), + Future_dynamic: findType("Future<@>"), + Future_void_Function_RTCEncodedFrame_TransformStreamDefaultController: findType("Future<~>(RTCEncodedFrame,TransformStreamDefaultController)"), + ImageData: findType("ImageData"), + Invocation: findType("Invocation"), + Iterable_dynamic: findType("Iterable<@>"), + Iterable_int: findType("Iterable"), + JSArray_String: findType("JSArray"), + JSArray_dynamic: findType("JSArray<@>"), + JSArray_int: findType("JSArray"), + JSIndexable_dynamic: findType("JSIndexable<@>"), + JSNull: findType("JSNull"), + JSObject: findType("JSObject"), + JavaScriptFunction: findType("JavaScriptFunction"), + JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"), + JavaScriptObject: findType("JavaScriptObject"), + JsLinkedHashMap_Symbol_dynamic: findType("JsLinkedHashMap"), + KeySet: findType("KeySet"), + Length: findType("Length"), + List_dynamic: findType("List<@>"), + List_int: findType("List"), + Map_dynamic_dynamic: findType("Map<@,@>"), + MessageEvent: findType("MessageEvent"), + MessagePort: findType("MessagePort"), + MimeType: findType("MimeType"), + NativeByteBuffer: findType("NativeByteBuffer"), + NativeTypedArrayOfInt: findType("NativeTypedArrayOfInt"), + NativeTypedData: findType("NativeTypedData"), + Node: findType("Node"), + Null: findType("Null"), + Number: findType("Number"), + Object: findType("Object"), + Plugin: findType("Plugin"), + RTCEncodedFrame: findType("RTCEncodedFrame"), + RTCTransformEvent: findType("RTCTransformEvent"), + ReadableStream: findType("ReadableStream"), + Record: findType("Record"), + Rectangle_num: findType("Rectangle"), + SharedArrayBuffer: findType("SharedArrayBuffer"), + SourceBuffer: findType("SourceBuffer"), + SpeechGrammar: findType("SpeechGrammar"), + SpeechRecognitionResult: findType("SpeechRecognitionResult"), + StackTrace: findType("StackTrace"), + String: findType("String"), + StyleSheet: findType("StyleSheet"), + Symbol: findType("Symbol0"), + TextTrack: findType("TextTrack"), + TextTrackCue: findType("TextTrackCue"), + Touch: findType("Touch"), + Transform: findType("Transform"), + TransformStreamDefaultController: findType("TransformStreamDefaultController"), + TypeError: findType("TypeError"), + Uint8List: findType("Uint8List"), + UnknownJavaScriptObject: findType("UnknownJavaScriptObject"), + WritableStream: findType("WritableStream"), + _AsyncCompleter_void: findType("_AsyncCompleter<~>"), + _Future_dynamic: findType("_Future<@>"), + _Future_int: findType("_Future"), + _Future_void: findType("_Future<~>"), + _IdentityHashMap_dynamic_dynamic: findType("_IdentityHashMap<@,@>"), + bool: findType("bool"), + bool_Function_Object: findType("bool(Object)"), + double: findType("double"), + dynamic: findType("@"), + dynamic_Function: findType("@()"), + dynamic_Function_Object: findType("@(Object)"), + dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"), + dynamic_Function_dynamic: findType("@(@)"), + dynamic_Function_dynamic_dynamic: findType("@(@,@)"), + int: findType("int"), + legacy_Never: findType("0&*"), + legacy_Object: findType("Object*"), + nullable_EventTarget: findType("EventTarget?"), + nullable_Future_Null: findType("Future?"), + nullable_Gamepad: findType("Gamepad?"), + nullable_KeySet: findType("KeySet?"), + nullable_Object: findType("Object?"), + nullable_String: findType("String?"), + nullable__FutureListener_dynamic_dynamic: findType("_FutureListener<@,@>?"), + nullable_dynamic_Function_Event: findType("@(Event)?"), + nullable_void_Function: findType("~()?"), + nullable_void_Function_MessageEvent: findType("~(MessageEvent)?"), + num: findType("num"), + void: findType("~"), + void_Function: findType("~()"), + void_Function_String_String: findType("~(String,String)"), + void_Function_String_dynamic: findType("~(String,@)") + }; + })(); + (function constants() { + var makeConstList = hunkHelpers.makeConstList; + B.DedicatedWorkerGlobalScope_methods = A.DedicatedWorkerGlobalScope.prototype; + B.Interceptor_methods = J.Interceptor.prototype; + B.JSArray_methods = J.JSArray.prototype; + B.JSInt_methods = J.JSInt.prototype; + B.JSNumber_methods = J.JSNumber.prototype; + 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.NativeUint8List_methods = A.NativeUint8List.prototype; + B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype; + B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype; + B.C_Base64Decoder = new A.Base64Decoder(); + B.C_Base64Encoder = new A.Base64Encoder(); + B.C_JS_CONST = function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +}; + B.C_JS_CONST0 = function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof navigator == "object"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +}; + B.C_JS_CONST6 = function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var ua = navigator.userAgent; + if (ua.indexOf("DumpRenderTree") >= 0) return hooks; + if (ua.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +}; + B.C_JS_CONST1 = function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +}; + B.C_JS_CONST2 = function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +}; + B.C_JS_CONST5 = function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +}; + B.C_JS_CONST4 = function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +}; + B.C_JS_CONST3 = function(hooks) { return hooks; } +; + B.C_OutOfMemoryError = new A.OutOfMemoryError(); + B.C_SentinelValue = new A.SentinelValue(); + B.C__Required = new A._Required(); + B.C__RootZone = new A._RootZone(); + B.C__StringStackTrace = new A._StringStackTrace(); + B.CryptorError_0 = new A.CryptorError("kNew"); + B.CryptorError_1 = new A.CryptorError("kOk"); + B.CryptorError_2 = new A.CryptorError("kDecryptError"); + B.CryptorError_3 = new A.CryptorError("kEncryptError"); + B.CryptorError_5 = new A.CryptorError("kMissingKey"); + B.CryptorError_6 = new A.CryptorError("kKeyRatcheted"); + B.CryptorError_7 = new A.CryptorError("kInternalError"); + B.CryptorError_8 = new A.CryptorError("kDisposed"); + B.List_empty = A._setArrayType(makeConstList([]), type$.JSArray_dynamic); + B.List_empty0 = A._setArrayType(makeConstList([]), A.findType("JSArray")); + B.Map_empty = new A.ConstantStringMap(0, {}, B.List_empty0, A.findType("ConstantStringMap")); + B.Symbol_call = new A.Symbol("call"); + B.Type_JSObject_8k0 = A.typeLiteral("JSObject"); + B.Type_Object_xQ6 = A.typeLiteral("Object"); + })(); + (function staticFields() { + $._JS_INTEROP_INTERCEPTOR_TAG = null; + $.Primitives__identityHashCodeProperty = null; + $.BoundClosure__receiverFieldNameCache = null; + $.BoundClosure__interceptorFieldNameCache = null; + $.getTagFunction = null; + $.alternateTagFunction = null; + $.prototypeForTagFunction = null; + $.dispatchRecordsForInstanceTags = null; + $.interceptorsForUncacheableTags = null; + $.initNativeDispatchFlag = null; + $._nextCallback = null; + $._lastCallback = null; + $._lastPriorityCallback = null; + $._isInCallbackLoop = false; + $.Zone__current = B.C__RootZone; + $._toStringVisiting = A._setArrayType([], A.findType("JSArray")); + $.participantCryptors = A._setArrayType([], A.findType("JSArray")); + })(); + (function lazyInitializers() { + var _lazyFinal = hunkHelpers.lazyFinal, + _lazy = hunkHelpers.lazy; + _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", () => A.getIsolateAffinityTag("_$dart_dartClosure")); + _lazyFinal($, "_CopyingBytesBuilder__emptyList", "$get$_CopyingBytesBuilder__emptyList", () => A.NativeUint8List_NativeUint8List(0)); + _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({ + toString: function() { + return "$receiver$"; + } + }))); + _lazyFinal($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({$method$: null, + toString: function() { + return "$receiver$"; + } + }))); + _lazyFinal($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(null))); + _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() { + var $argumentsExpr$ = "$arguments$"; + try { + null.$method$($argumentsExpr$); + } catch (e) { + return e.message; + } + }())); + _lazyFinal($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(void 0))); + _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() { + var $argumentsExpr$ = "$arguments$"; + try { + (void 0).$method$($argumentsExpr$); + } catch (e) { + return e.message; + } + }())); + _lazyFinal($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(null))); + _lazyFinal($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() { + try { + null.$method$; + } catch (e) { + return e.message; + } + }())); + _lazyFinal($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(void 0))); + _lazyFinal($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() { + try { + (void 0).$method$; + } catch (e) { + return e.message; + } + }())); + _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", () => A._AsyncRun__initializeScheduleImmediate()); + _lazyFinal($, "_Base64Decoder__inverseAlphabet", "$get$_Base64Decoder__inverseAlphabet", () => new Int8Array(A._ensureNativeList(A._setArrayType([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2], type$.JSArray_int)))); + _lazy($, "_Base64Decoder__emptyBuffer", "$get$_Base64Decoder__emptyBuffer", () => A.NativeUint8List_NativeUint8List(0)); + _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_xQ6)); + _lazyFinal($, "Random__secureRandom", "$get$Random__secureRandom", () => { + var t1 = new A._JSSecureRandom(A.NativeByteData_NativeByteData(8)); + t1._JSSecureRandom$0(); + return t1; + }); + _lazy($, "keyProviderOptions", "$get$keyProviderOptions", () => A.KeyOptions$(A.NativeUint8List_NativeUint8List$fromList(new A.CodeUnits("ratchetSalt")), 16, true, null)); + })(); + (function nativeSupport() { + !function() { + var intern = function(s) { + var o = {}; + o[s] = 1; + return Object.keys(hunkHelpers.convertToFastObject(o))[0]; + }; + init.getIsolateTag = function(name) { + return intern("___dart_" + name + init.isolateTag); + }; + var tableProperty = "___dart_isolate_tags_"; + var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null)); + var rootProperty = "_ZxYxX"; + for (var i = 0;; i++) { + var property = intern(rootProperty + "_" + i + "_"); + if (!(property in usedProperties)) { + usedProperties[property] = 1; + init.isolateTag = property; + break; + } + } + init.dispatchPropertyName = init.getIsolateTag("dispatch_record"); + }(); + hunkHelpers.setOrUpdateInterceptorsByTag({WebGL: J.Interceptor, AnimationEffectReadOnly: J.JavaScriptObject, AnimationEffectTiming: J.JavaScriptObject, AnimationEffectTimingReadOnly: J.JavaScriptObject, AnimationTimeline: J.JavaScriptObject, AnimationWorkletGlobalScope: J.JavaScriptObject, AuthenticatorAssertionResponse: J.JavaScriptObject, AuthenticatorAttestationResponse: J.JavaScriptObject, AuthenticatorResponse: J.JavaScriptObject, BackgroundFetchFetch: J.JavaScriptObject, BackgroundFetchManager: J.JavaScriptObject, BackgroundFetchSettledFetch: J.JavaScriptObject, BarProp: J.JavaScriptObject, BarcodeDetector: J.JavaScriptObject, BluetoothRemoteGATTDescriptor: J.JavaScriptObject, Body: J.JavaScriptObject, BudgetState: J.JavaScriptObject, CacheStorage: J.JavaScriptObject, CanvasGradient: J.JavaScriptObject, CanvasPattern: J.JavaScriptObject, CanvasRenderingContext2D: J.JavaScriptObject, Client: J.JavaScriptObject, Clients: J.JavaScriptObject, CookieStore: J.JavaScriptObject, Coordinates: J.JavaScriptObject, Credential: J.JavaScriptObject, CredentialUserData: J.JavaScriptObject, CredentialsContainer: J.JavaScriptObject, Crypto: J.JavaScriptObject, CSS: J.JavaScriptObject, CSSVariableReferenceValue: J.JavaScriptObject, CustomElementRegistry: J.JavaScriptObject, DataTransfer: J.JavaScriptObject, DeprecatedStorageInfo: J.JavaScriptObject, DeprecatedStorageQuota: J.JavaScriptObject, DeprecationReport: J.JavaScriptObject, DetectedBarcode: J.JavaScriptObject, DetectedFace: J.JavaScriptObject, DetectedText: J.JavaScriptObject, DeviceAcceleration: J.JavaScriptObject, DeviceRotationRate: J.JavaScriptObject, DirectoryEntry: J.JavaScriptObject, webkitFileSystemDirectoryEntry: J.JavaScriptObject, FileSystemDirectoryEntry: J.JavaScriptObject, DirectoryReader: J.JavaScriptObject, WebKitDirectoryReader: J.JavaScriptObject, webkitFileSystemDirectoryReader: J.JavaScriptObject, FileSystemDirectoryReader: J.JavaScriptObject, DocumentOrShadowRoot: J.JavaScriptObject, DocumentTimeline: J.JavaScriptObject, DOMError: J.JavaScriptObject, DOMImplementation: J.JavaScriptObject, Iterator: J.JavaScriptObject, DOMMatrix: J.JavaScriptObject, DOMMatrixReadOnly: J.JavaScriptObject, DOMParser: J.JavaScriptObject, DOMPoint: J.JavaScriptObject, DOMPointReadOnly: J.JavaScriptObject, DOMQuad: J.JavaScriptObject, DOMStringMap: J.JavaScriptObject, Entry: J.JavaScriptObject, webkitFileSystemEntry: J.JavaScriptObject, FileSystemEntry: J.JavaScriptObject, External: J.JavaScriptObject, FaceDetector: J.JavaScriptObject, FederatedCredential: J.JavaScriptObject, FileEntry: J.JavaScriptObject, webkitFileSystemFileEntry: J.JavaScriptObject, FileSystemFileEntry: J.JavaScriptObject, DOMFileSystem: J.JavaScriptObject, WebKitFileSystem: J.JavaScriptObject, webkitFileSystem: J.JavaScriptObject, FileSystem: J.JavaScriptObject, FontFace: J.JavaScriptObject, FontFaceSource: J.JavaScriptObject, FormData: J.JavaScriptObject, GamepadButton: J.JavaScriptObject, GamepadPose: J.JavaScriptObject, Geolocation: J.JavaScriptObject, Position: J.JavaScriptObject, GeolocationPosition: J.JavaScriptObject, Headers: J.JavaScriptObject, HTMLHyperlinkElementUtils: J.JavaScriptObject, IdleDeadline: J.JavaScriptObject, ImageBitmap: J.JavaScriptObject, ImageBitmapRenderingContext: J.JavaScriptObject, ImageCapture: J.JavaScriptObject, InputDeviceCapabilities: J.JavaScriptObject, IntersectionObserver: J.JavaScriptObject, IntersectionObserverEntry: J.JavaScriptObject, InterventionReport: J.JavaScriptObject, KeyframeEffect: J.JavaScriptObject, KeyframeEffectReadOnly: J.JavaScriptObject, MediaCapabilities: J.JavaScriptObject, MediaCapabilitiesInfo: J.JavaScriptObject, MediaError: J.JavaScriptObject, MediaKeyStatusMap: J.JavaScriptObject, MediaKeySystemAccess: J.JavaScriptObject, MediaKeys: J.JavaScriptObject, MediaKeysPolicy: J.JavaScriptObject, MediaMetadata: J.JavaScriptObject, MediaSession: J.JavaScriptObject, MediaSettingsRange: J.JavaScriptObject, MemoryInfo: J.JavaScriptObject, MessageChannel: J.JavaScriptObject, Metadata: J.JavaScriptObject, MutationObserver: J.JavaScriptObject, WebKitMutationObserver: J.JavaScriptObject, MutationRecord: J.JavaScriptObject, NavigationPreloadManager: J.JavaScriptObject, Navigator: J.JavaScriptObject, NavigatorAutomationInformation: J.JavaScriptObject, NavigatorConcurrentHardware: J.JavaScriptObject, NavigatorCookies: J.JavaScriptObject, NavigatorUserMediaError: J.JavaScriptObject, NodeFilter: J.JavaScriptObject, NodeIterator: J.JavaScriptObject, NonDocumentTypeChildNode: J.JavaScriptObject, NonElementParentNode: J.JavaScriptObject, NoncedElement: J.JavaScriptObject, OffscreenCanvasRenderingContext2D: J.JavaScriptObject, OverconstrainedError: J.JavaScriptObject, PaintRenderingContext2D: J.JavaScriptObject, PaintSize: J.JavaScriptObject, PaintWorkletGlobalScope: J.JavaScriptObject, PasswordCredential: J.JavaScriptObject, Path2D: J.JavaScriptObject, PaymentAddress: J.JavaScriptObject, PaymentInstruments: J.JavaScriptObject, PaymentManager: J.JavaScriptObject, PaymentResponse: J.JavaScriptObject, PerformanceEntry: J.JavaScriptObject, PerformanceLongTaskTiming: J.JavaScriptObject, PerformanceMark: J.JavaScriptObject, PerformanceMeasure: J.JavaScriptObject, PerformanceNavigation: J.JavaScriptObject, PerformanceNavigationTiming: J.JavaScriptObject, PerformanceObserver: J.JavaScriptObject, PerformanceObserverEntryList: J.JavaScriptObject, PerformancePaintTiming: J.JavaScriptObject, PerformanceResourceTiming: J.JavaScriptObject, PerformanceServerTiming: J.JavaScriptObject, PerformanceTiming: J.JavaScriptObject, Permissions: J.JavaScriptObject, PhotoCapabilities: J.JavaScriptObject, PositionError: J.JavaScriptObject, GeolocationPositionError: J.JavaScriptObject, Presentation: J.JavaScriptObject, PresentationReceiver: J.JavaScriptObject, PublicKeyCredential: J.JavaScriptObject, PushManager: J.JavaScriptObject, PushMessageData: J.JavaScriptObject, PushSubscription: J.JavaScriptObject, PushSubscriptionOptions: J.JavaScriptObject, Range: J.JavaScriptObject, RelatedApplication: J.JavaScriptObject, ReportBody: J.JavaScriptObject, ReportingObserver: J.JavaScriptObject, ResizeObserver: J.JavaScriptObject, ResizeObserverEntry: J.JavaScriptObject, RTCCertificate: J.JavaScriptObject, RTCIceCandidate: J.JavaScriptObject, mozRTCIceCandidate: J.JavaScriptObject, RTCLegacyStatsReport: J.JavaScriptObject, RTCRtpContributingSource: J.JavaScriptObject, RTCRtpReceiver: J.JavaScriptObject, RTCRtpSender: J.JavaScriptObject, RTCSessionDescription: J.JavaScriptObject, mozRTCSessionDescription: J.JavaScriptObject, RTCStatsResponse: J.JavaScriptObject, Screen: J.JavaScriptObject, ScrollState: J.JavaScriptObject, ScrollTimeline: J.JavaScriptObject, Selection: J.JavaScriptObject, SpeechRecognitionAlternative: J.JavaScriptObject, SpeechSynthesisVoice: J.JavaScriptObject, StaticRange: J.JavaScriptObject, StorageManager: J.JavaScriptObject, StyleMedia: J.JavaScriptObject, StylePropertyMap: J.JavaScriptObject, StylePropertyMapReadonly: J.JavaScriptObject, SyncManager: J.JavaScriptObject, TaskAttributionTiming: J.JavaScriptObject, TextDetector: J.JavaScriptObject, TextMetrics: J.JavaScriptObject, TrackDefault: J.JavaScriptObject, TreeWalker: J.JavaScriptObject, TrustedHTML: J.JavaScriptObject, TrustedScriptURL: J.JavaScriptObject, TrustedURL: J.JavaScriptObject, UnderlyingSourceBase: J.JavaScriptObject, URLSearchParams: J.JavaScriptObject, VRCoordinateSystem: J.JavaScriptObject, VRDisplayCapabilities: J.JavaScriptObject, VREyeParameters: J.JavaScriptObject, VRFrameData: J.JavaScriptObject, VRFrameOfReference: J.JavaScriptObject, VRPose: J.JavaScriptObject, VRStageBounds: J.JavaScriptObject, VRStageBoundsPoint: J.JavaScriptObject, VRStageParameters: J.JavaScriptObject, ValidityState: J.JavaScriptObject, VideoPlaybackQuality: J.JavaScriptObject, VTTRegion: J.JavaScriptObject, WindowClient: J.JavaScriptObject, WorkletAnimation: J.JavaScriptObject, WorkletGlobalScope: J.JavaScriptObject, XPathEvaluator: J.JavaScriptObject, XPathExpression: J.JavaScriptObject, XPathNSResolver: J.JavaScriptObject, XPathResult: J.JavaScriptObject, XMLSerializer: J.JavaScriptObject, XSLTProcessor: J.JavaScriptObject, Bluetooth: J.JavaScriptObject, BluetoothCharacteristicProperties: J.JavaScriptObject, BluetoothRemoteGATTServer: J.JavaScriptObject, BluetoothRemoteGATTService: J.JavaScriptObject, BluetoothUUID: J.JavaScriptObject, BudgetService: J.JavaScriptObject, Cache: J.JavaScriptObject, DOMFileSystemSync: J.JavaScriptObject, DirectoryEntrySync: J.JavaScriptObject, DirectoryReaderSync: J.JavaScriptObject, EntrySync: J.JavaScriptObject, FileEntrySync: J.JavaScriptObject, FileReaderSync: J.JavaScriptObject, FileWriterSync: J.JavaScriptObject, HTMLAllCollection: J.JavaScriptObject, Mojo: J.JavaScriptObject, MojoHandle: J.JavaScriptObject, MojoWatcher: J.JavaScriptObject, NFC: J.JavaScriptObject, PagePopupController: J.JavaScriptObject, Report: J.JavaScriptObject, Request: J.JavaScriptObject, Response: J.JavaScriptObject, SubtleCrypto: J.JavaScriptObject, USBAlternateInterface: J.JavaScriptObject, USBConfiguration: J.JavaScriptObject, USBDevice: J.JavaScriptObject, USBEndpoint: J.JavaScriptObject, USBInTransferResult: J.JavaScriptObject, USBInterface: J.JavaScriptObject, USBIsochronousInTransferPacket: J.JavaScriptObject, USBIsochronousInTransferResult: J.JavaScriptObject, USBIsochronousOutTransferPacket: J.JavaScriptObject, USBIsochronousOutTransferResult: J.JavaScriptObject, USBOutTransferResult: J.JavaScriptObject, WorkerLocation: J.JavaScriptObject, WorkerNavigator: J.JavaScriptObject, Worklet: J.JavaScriptObject, IDBCursor: J.JavaScriptObject, IDBCursorWithValue: J.JavaScriptObject, IDBFactory: J.JavaScriptObject, IDBIndex: J.JavaScriptObject, IDBKeyRange: J.JavaScriptObject, IDBObjectStore: J.JavaScriptObject, IDBObservation: J.JavaScriptObject, IDBObserver: J.JavaScriptObject, IDBObserverChanges: J.JavaScriptObject, SVGAngle: J.JavaScriptObject, SVGAnimatedAngle: J.JavaScriptObject, SVGAnimatedBoolean: J.JavaScriptObject, SVGAnimatedEnumeration: J.JavaScriptObject, SVGAnimatedInteger: J.JavaScriptObject, SVGAnimatedLength: J.JavaScriptObject, SVGAnimatedLengthList: J.JavaScriptObject, SVGAnimatedNumber: J.JavaScriptObject, SVGAnimatedNumberList: J.JavaScriptObject, SVGAnimatedPreserveAspectRatio: J.JavaScriptObject, SVGAnimatedRect: J.JavaScriptObject, SVGAnimatedString: J.JavaScriptObject, SVGAnimatedTransformList: J.JavaScriptObject, SVGMatrix: J.JavaScriptObject, SVGPoint: J.JavaScriptObject, SVGPreserveAspectRatio: J.JavaScriptObject, SVGRect: J.JavaScriptObject, SVGUnitTypes: J.JavaScriptObject, AudioListener: J.JavaScriptObject, AudioParam: J.JavaScriptObject, AudioWorkletGlobalScope: J.JavaScriptObject, AudioWorkletProcessor: J.JavaScriptObject, PeriodicWave: J.JavaScriptObject, WebGLActiveInfo: J.JavaScriptObject, ANGLEInstancedArrays: J.JavaScriptObject, ANGLE_instanced_arrays: J.JavaScriptObject, WebGLBuffer: J.JavaScriptObject, WebGLCanvas: J.JavaScriptObject, WebGLColorBufferFloat: J.JavaScriptObject, WebGLCompressedTextureASTC: J.JavaScriptObject, WebGLCompressedTextureATC: J.JavaScriptObject, WEBGL_compressed_texture_atc: J.JavaScriptObject, WebGLCompressedTextureETC1: J.JavaScriptObject, WEBGL_compressed_texture_etc1: J.JavaScriptObject, WebGLCompressedTextureETC: J.JavaScriptObject, WebGLCompressedTexturePVRTC: J.JavaScriptObject, WEBGL_compressed_texture_pvrtc: J.JavaScriptObject, WebGLCompressedTextureS3TC: J.JavaScriptObject, WEBGL_compressed_texture_s3tc: J.JavaScriptObject, WebGLCompressedTextureS3TCsRGB: J.JavaScriptObject, WebGLDebugRendererInfo: J.JavaScriptObject, WEBGL_debug_renderer_info: J.JavaScriptObject, WebGLDebugShaders: J.JavaScriptObject, WEBGL_debug_shaders: J.JavaScriptObject, WebGLDepthTexture: J.JavaScriptObject, WEBGL_depth_texture: J.JavaScriptObject, WebGLDrawBuffers: J.JavaScriptObject, WEBGL_draw_buffers: J.JavaScriptObject, EXTsRGB: J.JavaScriptObject, EXT_sRGB: J.JavaScriptObject, EXTBlendMinMax: J.JavaScriptObject, EXT_blend_minmax: J.JavaScriptObject, EXTColorBufferFloat: J.JavaScriptObject, EXTColorBufferHalfFloat: J.JavaScriptObject, EXTDisjointTimerQuery: J.JavaScriptObject, EXTDisjointTimerQueryWebGL2: J.JavaScriptObject, EXTFragDepth: J.JavaScriptObject, EXT_frag_depth: J.JavaScriptObject, EXTShaderTextureLOD: J.JavaScriptObject, EXT_shader_texture_lod: J.JavaScriptObject, EXTTextureFilterAnisotropic: J.JavaScriptObject, EXT_texture_filter_anisotropic: J.JavaScriptObject, WebGLFramebuffer: J.JavaScriptObject, WebGLGetBufferSubDataAsync: J.JavaScriptObject, WebGLLoseContext: J.JavaScriptObject, WebGLExtensionLoseContext: J.JavaScriptObject, WEBGL_lose_context: J.JavaScriptObject, OESElementIndexUint: J.JavaScriptObject, OES_element_index_uint: J.JavaScriptObject, OESStandardDerivatives: J.JavaScriptObject, OES_standard_derivatives: J.JavaScriptObject, OESTextureFloat: J.JavaScriptObject, OES_texture_float: J.JavaScriptObject, OESTextureFloatLinear: J.JavaScriptObject, OES_texture_float_linear: J.JavaScriptObject, OESTextureHalfFloat: J.JavaScriptObject, OES_texture_half_float: J.JavaScriptObject, OESTextureHalfFloatLinear: J.JavaScriptObject, OES_texture_half_float_linear: J.JavaScriptObject, OESVertexArrayObject: J.JavaScriptObject, OES_vertex_array_object: J.JavaScriptObject, WebGLProgram: J.JavaScriptObject, WebGLQuery: J.JavaScriptObject, WebGLRenderbuffer: J.JavaScriptObject, WebGLRenderingContext: J.JavaScriptObject, WebGL2RenderingContext: J.JavaScriptObject, WebGLSampler: J.JavaScriptObject, WebGLShader: J.JavaScriptObject, WebGLShaderPrecisionFormat: J.JavaScriptObject, WebGLSync: J.JavaScriptObject, WebGLTexture: J.JavaScriptObject, WebGLTimerQueryEXT: J.JavaScriptObject, WebGLTransformFeedback: J.JavaScriptObject, WebGLUniformLocation: J.JavaScriptObject, WebGLVertexArrayObject: J.JavaScriptObject, WebGLVertexArrayObjectOES: J.JavaScriptObject, WebGL2RenderingContextBase: J.JavaScriptObject, ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeTypedArrayOfDouble, Float64Array: A.NativeTypedArrayOfDouble, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List, HTMLAudioElement: A.HtmlElement, HTMLBRElement: A.HtmlElement, HTMLBaseElement: A.HtmlElement, HTMLBodyElement: A.HtmlElement, HTMLButtonElement: A.HtmlElement, HTMLCanvasElement: A.HtmlElement, HTMLContentElement: A.HtmlElement, HTMLDListElement: A.HtmlElement, HTMLDataElement: A.HtmlElement, HTMLDataListElement: A.HtmlElement, HTMLDetailsElement: A.HtmlElement, HTMLDialogElement: A.HtmlElement, HTMLDivElement: A.HtmlElement, HTMLEmbedElement: A.HtmlElement, HTMLFieldSetElement: A.HtmlElement, HTMLHRElement: A.HtmlElement, HTMLHeadElement: A.HtmlElement, HTMLHeadingElement: A.HtmlElement, HTMLHtmlElement: A.HtmlElement, HTMLIFrameElement: A.HtmlElement, HTMLImageElement: A.HtmlElement, HTMLInputElement: A.HtmlElement, HTMLLIElement: A.HtmlElement, HTMLLabelElement: A.HtmlElement, HTMLLegendElement: A.HtmlElement, HTMLLinkElement: A.HtmlElement, HTMLMapElement: A.HtmlElement, HTMLMediaElement: A.HtmlElement, HTMLMenuElement: A.HtmlElement, HTMLMetaElement: A.HtmlElement, HTMLMeterElement: A.HtmlElement, HTMLModElement: A.HtmlElement, HTMLOListElement: A.HtmlElement, HTMLObjectElement: A.HtmlElement, HTMLOptGroupElement: A.HtmlElement, HTMLOptionElement: A.HtmlElement, HTMLOutputElement: A.HtmlElement, HTMLParagraphElement: A.HtmlElement, HTMLParamElement: A.HtmlElement, HTMLPictureElement: A.HtmlElement, HTMLPreElement: A.HtmlElement, HTMLProgressElement: A.HtmlElement, HTMLQuoteElement: A.HtmlElement, HTMLScriptElement: A.HtmlElement, HTMLShadowElement: A.HtmlElement, HTMLSlotElement: A.HtmlElement, HTMLSourceElement: A.HtmlElement, HTMLSpanElement: A.HtmlElement, HTMLStyleElement: A.HtmlElement, HTMLTableCaptionElement: A.HtmlElement, HTMLTableCellElement: A.HtmlElement, HTMLTableDataCellElement: A.HtmlElement, HTMLTableHeaderCellElement: A.HtmlElement, HTMLTableColElement: A.HtmlElement, HTMLTableElement: A.HtmlElement, HTMLTableRowElement: A.HtmlElement, HTMLTableSectionElement: A.HtmlElement, HTMLTemplateElement: A.HtmlElement, HTMLTextAreaElement: A.HtmlElement, HTMLTimeElement: A.HtmlElement, HTMLTitleElement: A.HtmlElement, HTMLUListElement: A.HtmlElement, HTMLUnknownElement: A.HtmlElement, HTMLVideoElement: A.HtmlElement, HTMLDirectoryElement: A.HtmlElement, HTMLFontElement: A.HtmlElement, HTMLFrameElement: A.HtmlElement, HTMLFrameSetElement: A.HtmlElement, HTMLMarqueeElement: A.HtmlElement, HTMLElement: A.HtmlElement, AccessibleNodeList: A.AccessibleNodeList, HTMLAnchorElement: A.AnchorElement, HTMLAreaElement: A.AreaElement, Blob: A.Blob, CDATASection: A.CharacterData, CharacterData: A.CharacterData, Comment: A.CharacterData, ProcessingInstruction: A.CharacterData, Text: A.CharacterData, CryptoKey: A.CryptoKey, CSSPerspective: A.CssPerspective, CSSCharsetRule: A.CssRule, CSSConditionRule: A.CssRule, CSSFontFaceRule: A.CssRule, CSSGroupingRule: A.CssRule, CSSImportRule: A.CssRule, CSSKeyframeRule: A.CssRule, MozCSSKeyframeRule: A.CssRule, WebKitCSSKeyframeRule: A.CssRule, CSSKeyframesRule: A.CssRule, MozCSSKeyframesRule: A.CssRule, WebKitCSSKeyframesRule: A.CssRule, CSSMediaRule: A.CssRule, CSSNamespaceRule: A.CssRule, CSSPageRule: A.CssRule, CSSRule: A.CssRule, CSSStyleRule: A.CssRule, CSSSupportsRule: A.CssRule, CSSViewportRule: A.CssRule, CSSStyleDeclaration: A.CssStyleDeclaration, MSStyleCSSProperties: A.CssStyleDeclaration, CSS2Properties: A.CssStyleDeclaration, CSSImageValue: A.CssStyleValue, CSSKeywordValue: A.CssStyleValue, CSSNumericValue: A.CssStyleValue, CSSPositionValue: A.CssStyleValue, CSSResourceValue: A.CssStyleValue, CSSUnitValue: A.CssStyleValue, CSSURLImageValue: A.CssStyleValue, CSSStyleValue: A.CssStyleValue, CSSMatrixComponent: A.CssTransformComponent, CSSRotation: A.CssTransformComponent, CSSScale: A.CssTransformComponent, CSSSkew: A.CssTransformComponent, CSSTranslation: A.CssTransformComponent, CSSTransformComponent: A.CssTransformComponent, CSSTransformValue: A.CssTransformValue, CSSUnparsedValue: A.CssUnparsedValue, DataTransferItem: A.DataTransferItem, DataTransferItemList: A.DataTransferItemList, DedicatedWorkerGlobalScope: A.DedicatedWorkerGlobalScope, DOMException: A.DomException, ClientRectList: A.DomRectList, DOMRectList: A.DomRectList, DOMRectReadOnly: A.DomRectReadOnly, DOMStringList: A.DomStringList, DOMTokenList: A.DomTokenList, MathMLElement: A.Element, SVGAElement: A.Element, SVGAnimateElement: A.Element, SVGAnimateMotionElement: A.Element, SVGAnimateTransformElement: A.Element, SVGAnimationElement: A.Element, SVGCircleElement: A.Element, SVGClipPathElement: A.Element, SVGDefsElement: A.Element, SVGDescElement: A.Element, SVGDiscardElement: A.Element, SVGEllipseElement: A.Element, SVGFEBlendElement: A.Element, SVGFEColorMatrixElement: A.Element, SVGFEComponentTransferElement: A.Element, SVGFECompositeElement: A.Element, SVGFEConvolveMatrixElement: A.Element, SVGFEDiffuseLightingElement: A.Element, SVGFEDisplacementMapElement: A.Element, SVGFEDistantLightElement: A.Element, SVGFEFloodElement: A.Element, SVGFEFuncAElement: A.Element, SVGFEFuncBElement: A.Element, SVGFEFuncGElement: A.Element, SVGFEFuncRElement: A.Element, SVGFEGaussianBlurElement: A.Element, SVGFEImageElement: A.Element, SVGFEMergeElement: A.Element, SVGFEMergeNodeElement: A.Element, SVGFEMorphologyElement: A.Element, SVGFEOffsetElement: A.Element, SVGFEPointLightElement: A.Element, SVGFESpecularLightingElement: A.Element, SVGFESpotLightElement: A.Element, SVGFETileElement: A.Element, SVGFETurbulenceElement: A.Element, SVGFilterElement: A.Element, SVGForeignObjectElement: A.Element, SVGGElement: A.Element, SVGGeometryElement: A.Element, SVGGraphicsElement: A.Element, SVGImageElement: A.Element, SVGLineElement: A.Element, SVGLinearGradientElement: A.Element, SVGMarkerElement: A.Element, SVGMaskElement: A.Element, SVGMetadataElement: A.Element, SVGPathElement: A.Element, SVGPatternElement: A.Element, SVGPolygonElement: A.Element, SVGPolylineElement: A.Element, SVGRadialGradientElement: A.Element, SVGRectElement: A.Element, SVGScriptElement: A.Element, SVGSetElement: A.Element, SVGStopElement: A.Element, SVGStyleElement: A.Element, SVGElement: A.Element, SVGSVGElement: A.Element, SVGSwitchElement: A.Element, SVGSymbolElement: A.Element, SVGTSpanElement: A.Element, SVGTextContentElement: A.Element, SVGTextElement: A.Element, SVGTextPathElement: A.Element, SVGTextPositioningElement: A.Element, SVGTitleElement: A.Element, SVGUseElement: A.Element, SVGViewElement: A.Element, SVGGradientElement: A.Element, SVGComponentTransferFunctionElement: A.Element, SVGFEDropShadowElement: A.Element, SVGMPathElement: A.Element, Element: A.Element, AbortPaymentEvent: A.Event, AnimationEvent: A.Event, AnimationPlaybackEvent: A.Event, ApplicationCacheErrorEvent: A.Event, BackgroundFetchClickEvent: A.Event, BackgroundFetchEvent: A.Event, BackgroundFetchFailEvent: A.Event, BackgroundFetchedEvent: A.Event, BeforeInstallPromptEvent: A.Event, BeforeUnloadEvent: A.Event, BlobEvent: A.Event, CanMakePaymentEvent: A.Event, ClipboardEvent: A.Event, CloseEvent: A.Event, CompositionEvent: A.Event, CustomEvent: A.Event, DeviceMotionEvent: A.Event, DeviceOrientationEvent: A.Event, ErrorEvent: A.Event, ExtendableEvent: A.Event, ExtendableMessageEvent: A.Event, FetchEvent: A.Event, FocusEvent: A.Event, FontFaceSetLoadEvent: A.Event, ForeignFetchEvent: A.Event, GamepadEvent: A.Event, HashChangeEvent: A.Event, InstallEvent: A.Event, KeyboardEvent: A.Event, MediaEncryptedEvent: A.Event, MediaKeyMessageEvent: A.Event, MediaQueryListEvent: A.Event, MediaStreamEvent: A.Event, MediaStreamTrackEvent: A.Event, MIDIConnectionEvent: A.Event, MIDIMessageEvent: A.Event, MouseEvent: A.Event, DragEvent: A.Event, MutationEvent: A.Event, NotificationEvent: A.Event, PageTransitionEvent: A.Event, PaymentRequestEvent: A.Event, PaymentRequestUpdateEvent: A.Event, PointerEvent: A.Event, PopStateEvent: A.Event, PresentationConnectionAvailableEvent: A.Event, PresentationConnectionCloseEvent: A.Event, ProgressEvent: A.Event, PromiseRejectionEvent: A.Event, PushEvent: A.Event, RTCDataChannelEvent: A.Event, RTCDTMFToneChangeEvent: A.Event, RTCPeerConnectionIceEvent: A.Event, RTCTrackEvent: A.Event, SecurityPolicyViolationEvent: A.Event, SensorErrorEvent: A.Event, SpeechRecognitionError: A.Event, SpeechRecognitionEvent: A.Event, SpeechSynthesisEvent: A.Event, StorageEvent: A.Event, SyncEvent: A.Event, TextEvent: A.Event, TouchEvent: A.Event, TrackEvent: A.Event, TransitionEvent: A.Event, WebKitTransitionEvent: A.Event, UIEvent: A.Event, VRDeviceEvent: A.Event, VRDisplayEvent: A.Event, VRSessionEvent: A.Event, WheelEvent: A.Event, MojoInterfaceRequestEvent: A.Event, ResourceProgressEvent: A.Event, USBConnectionEvent: A.Event, IDBVersionChangeEvent: A.Event, AudioProcessingEvent: A.Event, OfflineAudioCompletionEvent: A.Event, WebGLContextEvent: A.Event, Event: A.Event, InputEvent: A.Event, SubmitEvent: A.Event, AbsoluteOrientationSensor: A.EventTarget, Accelerometer: A.EventTarget, AccessibleNode: A.EventTarget, AmbientLightSensor: A.EventTarget, Animation: A.EventTarget, ApplicationCache: A.EventTarget, DOMApplicationCache: A.EventTarget, OfflineResourceList: A.EventTarget, BackgroundFetchRegistration: A.EventTarget, BatteryManager: A.EventTarget, BroadcastChannel: A.EventTarget, EventSource: A.EventTarget, FileReader: A.EventTarget, FontFaceSet: A.EventTarget, Gyroscope: A.EventTarget, XMLHttpRequest: A.EventTarget, XMLHttpRequestEventTarget: A.EventTarget, XMLHttpRequestUpload: A.EventTarget, LinearAccelerationSensor: A.EventTarget, Magnetometer: A.EventTarget, MediaDevices: A.EventTarget, MediaKeySession: A.EventTarget, MediaQueryList: A.EventTarget, MediaRecorder: A.EventTarget, MediaSource: A.EventTarget, MediaStream: A.EventTarget, MIDIAccess: A.EventTarget, MIDIInput: A.EventTarget, MIDIOutput: A.EventTarget, MIDIPort: A.EventTarget, NetworkInformation: A.EventTarget, Notification: A.EventTarget, OffscreenCanvas: A.EventTarget, OrientationSensor: A.EventTarget, PaymentRequest: A.EventTarget, Performance: A.EventTarget, PermissionStatus: A.EventTarget, PresentationAvailability: A.EventTarget, PresentationConnection: A.EventTarget, PresentationConnectionList: A.EventTarget, PresentationRequest: A.EventTarget, RelativeOrientationSensor: A.EventTarget, RemotePlayback: A.EventTarget, RTCDataChannel: A.EventTarget, DataChannel: A.EventTarget, RTCDTMFSender: A.EventTarget, RTCPeerConnection: A.EventTarget, webkitRTCPeerConnection: A.EventTarget, mozRTCPeerConnection: A.EventTarget, ScreenOrientation: A.EventTarget, Sensor: A.EventTarget, ServiceWorker: A.EventTarget, ServiceWorkerContainer: A.EventTarget, ServiceWorkerRegistration: A.EventTarget, SharedWorker: A.EventTarget, SpeechRecognition: A.EventTarget, SpeechSynthesis: A.EventTarget, SpeechSynthesisUtterance: A.EventTarget, VR: A.EventTarget, VRDevice: A.EventTarget, VRDisplay: A.EventTarget, VRSession: A.EventTarget, VisualViewport: A.EventTarget, WebSocket: A.EventTarget, Window: A.EventTarget, DOMWindow: A.EventTarget, Worker: A.EventTarget, WorkerPerformance: A.EventTarget, BluetoothDevice: A.EventTarget, BluetoothRemoteGATTCharacteristic: A.EventTarget, Clipboard: A.EventTarget, MojoInterfaceInterceptor: A.EventTarget, USB: A.EventTarget, IDBDatabase: A.EventTarget, IDBOpenDBRequest: A.EventTarget, IDBVersionChangeRequest: A.EventTarget, IDBRequest: A.EventTarget, IDBTransaction: A.EventTarget, AnalyserNode: A.EventTarget, RealtimeAnalyserNode: A.EventTarget, AudioBufferSourceNode: A.EventTarget, AudioDestinationNode: A.EventTarget, AudioNode: A.EventTarget, AudioScheduledSourceNode: A.EventTarget, AudioWorkletNode: A.EventTarget, BiquadFilterNode: A.EventTarget, ChannelMergerNode: A.EventTarget, AudioChannelMerger: A.EventTarget, ChannelSplitterNode: A.EventTarget, AudioChannelSplitter: A.EventTarget, ConstantSourceNode: A.EventTarget, ConvolverNode: A.EventTarget, DelayNode: A.EventTarget, DynamicsCompressorNode: A.EventTarget, GainNode: A.EventTarget, AudioGainNode: A.EventTarget, IIRFilterNode: A.EventTarget, MediaElementAudioSourceNode: A.EventTarget, MediaStreamAudioDestinationNode: A.EventTarget, MediaStreamAudioSourceNode: A.EventTarget, OscillatorNode: A.EventTarget, Oscillator: A.EventTarget, PannerNode: A.EventTarget, AudioPannerNode: A.EventTarget, webkitAudioPannerNode: A.EventTarget, ScriptProcessorNode: A.EventTarget, JavaScriptAudioNode: A.EventTarget, StereoPannerNode: A.EventTarget, WaveShaperNode: A.EventTarget, EventTarget: A.EventTarget, File: A.File, FileList: A.FileList, FileWriter: A.FileWriter, HTMLFormElement: A.FormElement, Gamepad: A.Gamepad, History: A.History, HTMLCollection: A.HtmlCollection, HTMLFormControlsCollection: A.HtmlCollection, HTMLOptionsCollection: A.HtmlCollection, ImageData: A.ImageData, Location: A.Location, MediaDeviceInfo: A.MediaDeviceInfo, MediaList: A.MediaList, CanvasCaptureMediaStreamTrack: A.MediaStreamTrack, MediaStreamTrack: A.MediaStreamTrack, MessageEvent: A.MessageEvent, MessagePort: A.MessagePort, MIDIInputMap: A.MidiInputMap, MIDIOutputMap: A.MidiOutputMap, MimeType: A.MimeType, MimeTypeArray: A.MimeTypeArray, Document: A.Node, DocumentFragment: A.Node, HTMLDocument: A.Node, ShadowRoot: A.Node, XMLDocument: A.Node, Attr: A.Node, DocumentType: A.Node, Node: A.Node, NodeList: A.NodeList, RadioNodeList: A.NodeList, Plugin: A.Plugin, PluginArray: A.PluginArray, RTCStatsReport: A.RtcStatsReport, HTMLSelectElement: A.SelectElement, SharedArrayBuffer: A.SharedArrayBuffer, SourceBuffer: A.SourceBuffer, SourceBufferList: A.SourceBufferList, SpeechGrammar: A.SpeechGrammar, SpeechGrammarList: A.SpeechGrammarList, SpeechRecognitionResult: A.SpeechRecognitionResult, Storage: A.Storage, CSSStyleSheet: A.StyleSheet, StyleSheet: A.StyleSheet, TextTrack: A.TextTrack, TextTrackCue: A.TextTrackCue, VTTCue: A.TextTrackCue, TextTrackCueList: A.TextTrackCueList, TextTrackList: A.TextTrackList, TimeRanges: A.TimeRanges, Touch: A.Touch, TouchList: A.TouchList, TrackDefaultList: A.TrackDefaultList, HTMLTrackElement: A.TrackElement, URL: A.Url, VideoTrack: A.VideoTrack, VideoTrackList: A.VideoTrackList, ServiceWorkerGlobalScope: A.WorkerGlobalScope, SharedWorkerGlobalScope: A.WorkerGlobalScope, WorkerGlobalScope: A.WorkerGlobalScope, CSSRuleList: A._CssRuleList, ClientRect: A._DomRect, DOMRect: A._DomRect, GamepadList: A._GamepadList, NamedNodeMap: A._NamedNodeMap, MozNamedAttrMap: A._NamedNodeMap, SpeechRecognitionResultList: A._SpeechRecognitionResultList, StyleSheetList: A._StyleSheetList, SVGLength: A.Length, SVGLengthList: A.LengthList, SVGNumber: A.Number, SVGNumberList: A.NumberList, SVGPointList: A.PointList, SVGStringList: A.StringList, SVGTransform: A.Transform, SVGTransformList: A.TransformList, AudioBuffer: A.AudioBuffer, AudioParamMap: A.AudioParamMap, AudioTrack: A.AudioTrack, AudioTrackList: A.AudioTrackList, AudioContext: A.BaseAudioContext, webkitAudioContext: A.BaseAudioContext, BaseAudioContext: A.BaseAudioContext, OfflineAudioContext: A.OfflineAudioContext}); + hunkHelpers.setOrUpdateLeafTags({WebGL: true, AnimationEffectReadOnly: true, AnimationEffectTiming: true, AnimationEffectTimingReadOnly: true, AnimationTimeline: true, AnimationWorkletGlobalScope: true, AuthenticatorAssertionResponse: true, AuthenticatorAttestationResponse: true, AuthenticatorResponse: true, BackgroundFetchFetch: true, BackgroundFetchManager: true, BackgroundFetchSettledFetch: true, BarProp: true, BarcodeDetector: true, BluetoothRemoteGATTDescriptor: true, Body: true, BudgetState: true, CacheStorage: true, CanvasGradient: true, CanvasPattern: true, CanvasRenderingContext2D: true, Client: true, Clients: true, CookieStore: true, Coordinates: true, Credential: true, CredentialUserData: true, CredentialsContainer: true, Crypto: true, CSS: true, CSSVariableReferenceValue: true, CustomElementRegistry: true, DataTransfer: true, DeprecatedStorageInfo: true, DeprecatedStorageQuota: true, DeprecationReport: true, DetectedBarcode: true, DetectedFace: true, DetectedText: true, DeviceAcceleration: true, DeviceRotationRate: true, DirectoryEntry: true, webkitFileSystemDirectoryEntry: true, FileSystemDirectoryEntry: true, DirectoryReader: true, WebKitDirectoryReader: true, webkitFileSystemDirectoryReader: true, FileSystemDirectoryReader: true, DocumentOrShadowRoot: true, DocumentTimeline: true, DOMError: true, DOMImplementation: true, Iterator: true, DOMMatrix: true, DOMMatrixReadOnly: true, DOMParser: true, DOMPoint: true, DOMPointReadOnly: true, DOMQuad: true, DOMStringMap: true, Entry: true, webkitFileSystemEntry: true, FileSystemEntry: true, External: true, FaceDetector: true, FederatedCredential: true, FileEntry: true, webkitFileSystemFileEntry: true, FileSystemFileEntry: true, DOMFileSystem: true, WebKitFileSystem: true, webkitFileSystem: true, FileSystem: true, FontFace: true, FontFaceSource: true, FormData: true, GamepadButton: true, GamepadPose: true, Geolocation: true, Position: true, GeolocationPosition: true, Headers: true, HTMLHyperlinkElementUtils: true, IdleDeadline: true, ImageBitmap: true, ImageBitmapRenderingContext: true, ImageCapture: true, InputDeviceCapabilities: true, IntersectionObserver: true, IntersectionObserverEntry: true, InterventionReport: true, KeyframeEffect: true, KeyframeEffectReadOnly: true, MediaCapabilities: true, MediaCapabilitiesInfo: true, MediaError: true, MediaKeyStatusMap: true, MediaKeySystemAccess: true, MediaKeys: true, MediaKeysPolicy: true, MediaMetadata: true, MediaSession: true, MediaSettingsRange: true, MemoryInfo: true, MessageChannel: true, Metadata: true, MutationObserver: true, WebKitMutationObserver: true, MutationRecord: true, NavigationPreloadManager: true, Navigator: true, NavigatorAutomationInformation: true, NavigatorConcurrentHardware: true, NavigatorCookies: true, NavigatorUserMediaError: true, NodeFilter: true, NodeIterator: true, NonDocumentTypeChildNode: true, NonElementParentNode: true, NoncedElement: true, OffscreenCanvasRenderingContext2D: true, OverconstrainedError: true, PaintRenderingContext2D: true, PaintSize: true, PaintWorkletGlobalScope: true, PasswordCredential: true, Path2D: true, PaymentAddress: true, PaymentInstruments: true, PaymentManager: true, PaymentResponse: true, PerformanceEntry: true, PerformanceLongTaskTiming: true, PerformanceMark: true, PerformanceMeasure: true, PerformanceNavigation: true, PerformanceNavigationTiming: true, PerformanceObserver: true, PerformanceObserverEntryList: true, PerformancePaintTiming: true, PerformanceResourceTiming: true, PerformanceServerTiming: true, PerformanceTiming: true, Permissions: true, PhotoCapabilities: true, PositionError: true, GeolocationPositionError: true, Presentation: true, PresentationReceiver: true, PublicKeyCredential: true, PushManager: true, PushMessageData: true, PushSubscription: true, PushSubscriptionOptions: true, Range: true, RelatedApplication: true, ReportBody: true, ReportingObserver: true, ResizeObserver: true, ResizeObserverEntry: true, RTCCertificate: true, RTCIceCandidate: true, mozRTCIceCandidate: true, RTCLegacyStatsReport: true, RTCRtpContributingSource: true, RTCRtpReceiver: true, RTCRtpSender: true, RTCSessionDescription: true, mozRTCSessionDescription: true, RTCStatsResponse: true, Screen: true, ScrollState: true, ScrollTimeline: true, Selection: true, SpeechRecognitionAlternative: true, SpeechSynthesisVoice: true, StaticRange: true, StorageManager: true, StyleMedia: true, StylePropertyMap: true, StylePropertyMapReadonly: true, SyncManager: true, TaskAttributionTiming: true, TextDetector: true, TextMetrics: true, TrackDefault: true, TreeWalker: true, TrustedHTML: true, TrustedScriptURL: true, TrustedURL: true, UnderlyingSourceBase: true, URLSearchParams: true, VRCoordinateSystem: true, VRDisplayCapabilities: true, VREyeParameters: true, VRFrameData: true, VRFrameOfReference: true, VRPose: true, VRStageBounds: true, VRStageBoundsPoint: true, VRStageParameters: true, ValidityState: true, VideoPlaybackQuality: true, VTTRegion: true, WindowClient: true, WorkletAnimation: true, WorkletGlobalScope: true, XPathEvaluator: true, XPathExpression: true, XPathNSResolver: true, XPathResult: true, XMLSerializer: true, XSLTProcessor: true, Bluetooth: true, BluetoothCharacteristicProperties: true, BluetoothRemoteGATTServer: true, BluetoothRemoteGATTService: true, BluetoothUUID: true, BudgetService: true, Cache: true, DOMFileSystemSync: true, DirectoryEntrySync: true, DirectoryReaderSync: true, EntrySync: true, FileEntrySync: true, FileReaderSync: true, FileWriterSync: true, HTMLAllCollection: true, Mojo: true, MojoHandle: true, MojoWatcher: true, NFC: true, PagePopupController: true, Report: true, Request: true, Response: true, SubtleCrypto: true, USBAlternateInterface: true, USBConfiguration: true, USBDevice: true, USBEndpoint: true, USBInTransferResult: true, USBInterface: true, USBIsochronousInTransferPacket: true, USBIsochronousInTransferResult: true, USBIsochronousOutTransferPacket: true, USBIsochronousOutTransferResult: true, USBOutTransferResult: true, WorkerLocation: true, WorkerNavigator: true, Worklet: true, IDBCursor: true, IDBCursorWithValue: true, IDBFactory: true, IDBIndex: true, IDBKeyRange: true, IDBObjectStore: true, IDBObservation: true, IDBObserver: true, IDBObserverChanges: true, SVGAngle: true, SVGAnimatedAngle: true, SVGAnimatedBoolean: true, SVGAnimatedEnumeration: true, SVGAnimatedInteger: true, SVGAnimatedLength: true, SVGAnimatedLengthList: true, SVGAnimatedNumber: true, SVGAnimatedNumberList: true, SVGAnimatedPreserveAspectRatio: true, SVGAnimatedRect: true, SVGAnimatedString: true, SVGAnimatedTransformList: true, SVGMatrix: true, SVGPoint: true, SVGPreserveAspectRatio: true, SVGRect: true, SVGUnitTypes: true, AudioListener: true, AudioParam: true, AudioWorkletGlobalScope: true, AudioWorkletProcessor: true, PeriodicWave: true, WebGLActiveInfo: true, ANGLEInstancedArrays: true, ANGLE_instanced_arrays: true, WebGLBuffer: true, WebGLCanvas: true, WebGLColorBufferFloat: true, WebGLCompressedTextureASTC: true, WebGLCompressedTextureATC: true, WEBGL_compressed_texture_atc: true, WebGLCompressedTextureETC1: true, WEBGL_compressed_texture_etc1: true, WebGLCompressedTextureETC: true, WebGLCompressedTexturePVRTC: true, WEBGL_compressed_texture_pvrtc: true, WebGLCompressedTextureS3TC: true, WEBGL_compressed_texture_s3tc: true, WebGLCompressedTextureS3TCsRGB: true, WebGLDebugRendererInfo: true, WEBGL_debug_renderer_info: true, WebGLDebugShaders: true, WEBGL_debug_shaders: true, WebGLDepthTexture: true, WEBGL_depth_texture: true, WebGLDrawBuffers: true, WEBGL_draw_buffers: true, EXTsRGB: true, EXT_sRGB: true, EXTBlendMinMax: true, EXT_blend_minmax: true, EXTColorBufferFloat: true, EXTColorBufferHalfFloat: true, EXTDisjointTimerQuery: true, EXTDisjointTimerQueryWebGL2: true, EXTFragDepth: true, EXT_frag_depth: true, EXTShaderTextureLOD: true, EXT_shader_texture_lod: true, EXTTextureFilterAnisotropic: true, EXT_texture_filter_anisotropic: true, WebGLFramebuffer: true, WebGLGetBufferSubDataAsync: true, WebGLLoseContext: true, WebGLExtensionLoseContext: true, WEBGL_lose_context: true, OESElementIndexUint: true, OES_element_index_uint: true, OESStandardDerivatives: true, OES_standard_derivatives: true, OESTextureFloat: true, OES_texture_float: true, OESTextureFloatLinear: true, OES_texture_float_linear: true, OESTextureHalfFloat: true, OES_texture_half_float: true, OESTextureHalfFloatLinear: true, OES_texture_half_float_linear: true, OESVertexArrayObject: true, OES_vertex_array_object: true, WebGLProgram: true, WebGLQuery: true, WebGLRenderbuffer: true, WebGLRenderingContext: true, WebGL2RenderingContext: true, WebGLSampler: true, WebGLShader: true, WebGLShaderPrecisionFormat: true, WebGLSync: true, WebGLTexture: true, WebGLTimerQueryEXT: true, WebGLTransformFeedback: true, WebGLUniformLocation: true, WebGLVertexArrayObject: true, WebGLVertexArrayObjectOES: true, WebGL2RenderingContextBase: true, ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false, HTMLAudioElement: true, HTMLBRElement: true, HTMLBaseElement: true, HTMLBodyElement: true, HTMLButtonElement: true, HTMLCanvasElement: true, HTMLContentElement: true, HTMLDListElement: true, HTMLDataElement: true, HTMLDataListElement: true, HTMLDetailsElement: true, HTMLDialogElement: true, HTMLDivElement: true, HTMLEmbedElement: true, HTMLFieldSetElement: true, HTMLHRElement: true, HTMLHeadElement: true, HTMLHeadingElement: true, HTMLHtmlElement: true, HTMLIFrameElement: true, HTMLImageElement: true, HTMLInputElement: true, HTMLLIElement: true, HTMLLabelElement: true, HTMLLegendElement: true, HTMLLinkElement: true, HTMLMapElement: true, HTMLMediaElement: true, HTMLMenuElement: true, HTMLMetaElement: true, HTMLMeterElement: true, HTMLModElement: true, HTMLOListElement: true, HTMLObjectElement: true, HTMLOptGroupElement: true, HTMLOptionElement: true, HTMLOutputElement: true, HTMLParagraphElement: true, HTMLParamElement: true, HTMLPictureElement: true, HTMLPreElement: true, HTMLProgressElement: true, HTMLQuoteElement: true, HTMLScriptElement: true, HTMLShadowElement: true, HTMLSlotElement: true, HTMLSourceElement: true, HTMLSpanElement: true, HTMLStyleElement: true, HTMLTableCaptionElement: true, HTMLTableCellElement: true, HTMLTableDataCellElement: true, HTMLTableHeaderCellElement: true, HTMLTableColElement: true, HTMLTableElement: true, HTMLTableRowElement: true, HTMLTableSectionElement: true, HTMLTemplateElement: true, HTMLTextAreaElement: true, HTMLTimeElement: true, HTMLTitleElement: true, HTMLUListElement: true, HTMLUnknownElement: true, HTMLVideoElement: true, HTMLDirectoryElement: true, HTMLFontElement: true, HTMLFrameElement: true, HTMLFrameSetElement: true, HTMLMarqueeElement: true, HTMLElement: false, AccessibleNodeList: true, HTMLAnchorElement: true, HTMLAreaElement: true, Blob: false, CDATASection: true, CharacterData: true, Comment: true, ProcessingInstruction: true, Text: true, CryptoKey: true, CSSPerspective: true, CSSCharsetRule: true, CSSConditionRule: true, CSSFontFaceRule: true, CSSGroupingRule: true, CSSImportRule: true, CSSKeyframeRule: true, MozCSSKeyframeRule: true, WebKitCSSKeyframeRule: true, CSSKeyframesRule: true, MozCSSKeyframesRule: true, WebKitCSSKeyframesRule: true, CSSMediaRule: true, CSSNamespaceRule: true, CSSPageRule: true, CSSRule: true, CSSStyleRule: true, CSSSupportsRule: true, CSSViewportRule: true, CSSStyleDeclaration: true, MSStyleCSSProperties: true, CSS2Properties: true, CSSImageValue: true, CSSKeywordValue: true, CSSNumericValue: true, CSSPositionValue: true, CSSResourceValue: true, CSSUnitValue: true, CSSURLImageValue: true, CSSStyleValue: false, CSSMatrixComponent: true, CSSRotation: true, CSSScale: true, CSSSkew: true, CSSTranslation: true, CSSTransformComponent: false, CSSTransformValue: true, CSSUnparsedValue: true, DataTransferItem: true, DataTransferItemList: true, DedicatedWorkerGlobalScope: true, DOMException: true, ClientRectList: true, DOMRectList: true, DOMRectReadOnly: false, DOMStringList: true, DOMTokenList: true, MathMLElement: true, SVGAElement: true, SVGAnimateElement: true, SVGAnimateMotionElement: true, SVGAnimateTransformElement: true, SVGAnimationElement: true, SVGCircleElement: true, SVGClipPathElement: true, SVGDefsElement: true, SVGDescElement: true, SVGDiscardElement: true, SVGEllipseElement: true, SVGFEBlendElement: true, SVGFEColorMatrixElement: true, SVGFEComponentTransferElement: true, SVGFECompositeElement: true, SVGFEConvolveMatrixElement: true, SVGFEDiffuseLightingElement: true, SVGFEDisplacementMapElement: true, SVGFEDistantLightElement: true, SVGFEFloodElement: true, SVGFEFuncAElement: true, SVGFEFuncBElement: true, SVGFEFuncGElement: true, SVGFEFuncRElement: true, SVGFEGaussianBlurElement: true, SVGFEImageElement: true, SVGFEMergeElement: true, SVGFEMergeNodeElement: true, SVGFEMorphologyElement: true, SVGFEOffsetElement: true, SVGFEPointLightElement: true, SVGFESpecularLightingElement: true, SVGFESpotLightElement: true, SVGFETileElement: true, SVGFETurbulenceElement: true, SVGFilterElement: true, SVGForeignObjectElement: true, SVGGElement: true, SVGGeometryElement: true, SVGGraphicsElement: true, SVGImageElement: true, SVGLineElement: true, SVGLinearGradientElement: true, SVGMarkerElement: true, SVGMaskElement: true, SVGMetadataElement: true, SVGPathElement: true, SVGPatternElement: true, SVGPolygonElement: true, SVGPolylineElement: true, SVGRadialGradientElement: true, SVGRectElement: true, SVGScriptElement: true, SVGSetElement: true, SVGStopElement: true, SVGStyleElement: true, SVGElement: true, SVGSVGElement: true, SVGSwitchElement: true, SVGSymbolElement: true, SVGTSpanElement: true, SVGTextContentElement: true, SVGTextElement: true, SVGTextPathElement: true, SVGTextPositioningElement: true, SVGTitleElement: true, SVGUseElement: true, SVGViewElement: true, SVGGradientElement: true, SVGComponentTransferFunctionElement: true, SVGFEDropShadowElement: true, SVGMPathElement: true, Element: false, AbortPaymentEvent: true, AnimationEvent: true, AnimationPlaybackEvent: true, ApplicationCacheErrorEvent: true, BackgroundFetchClickEvent: true, BackgroundFetchEvent: true, BackgroundFetchFailEvent: true, BackgroundFetchedEvent: true, BeforeInstallPromptEvent: true, BeforeUnloadEvent: true, BlobEvent: true, CanMakePaymentEvent: true, ClipboardEvent: true, CloseEvent: true, CompositionEvent: true, CustomEvent: true, DeviceMotionEvent: true, DeviceOrientationEvent: true, ErrorEvent: true, ExtendableEvent: true, ExtendableMessageEvent: true, FetchEvent: true, FocusEvent: true, FontFaceSetLoadEvent: true, ForeignFetchEvent: true, GamepadEvent: true, HashChangeEvent: true, InstallEvent: true, KeyboardEvent: true, MediaEncryptedEvent: true, MediaKeyMessageEvent: true, MediaQueryListEvent: true, MediaStreamEvent: true, MediaStreamTrackEvent: true, MIDIConnectionEvent: true, MIDIMessageEvent: true, MouseEvent: true, DragEvent: true, MutationEvent: true, NotificationEvent: true, PageTransitionEvent: true, PaymentRequestEvent: true, PaymentRequestUpdateEvent: true, PointerEvent: true, PopStateEvent: true, PresentationConnectionAvailableEvent: true, PresentationConnectionCloseEvent: true, ProgressEvent: true, PromiseRejectionEvent: true, PushEvent: true, RTCDataChannelEvent: true, RTCDTMFToneChangeEvent: true, RTCPeerConnectionIceEvent: true, RTCTrackEvent: true, SecurityPolicyViolationEvent: true, SensorErrorEvent: true, SpeechRecognitionError: true, SpeechRecognitionEvent: true, SpeechSynthesisEvent: true, StorageEvent: true, SyncEvent: true, TextEvent: true, TouchEvent: true, TrackEvent: true, TransitionEvent: true, WebKitTransitionEvent: true, UIEvent: true, VRDeviceEvent: true, VRDisplayEvent: true, VRSessionEvent: true, WheelEvent: true, MojoInterfaceRequestEvent: true, ResourceProgressEvent: true, USBConnectionEvent: true, IDBVersionChangeEvent: true, AudioProcessingEvent: true, OfflineAudioCompletionEvent: true, WebGLContextEvent: true, Event: false, InputEvent: false, SubmitEvent: false, AbsoluteOrientationSensor: true, Accelerometer: true, AccessibleNode: true, AmbientLightSensor: true, Animation: true, ApplicationCache: true, DOMApplicationCache: true, OfflineResourceList: true, BackgroundFetchRegistration: true, BatteryManager: true, BroadcastChannel: true, EventSource: true, FileReader: true, FontFaceSet: true, Gyroscope: true, XMLHttpRequest: true, XMLHttpRequestEventTarget: true, XMLHttpRequestUpload: true, LinearAccelerationSensor: true, Magnetometer: true, MediaDevices: true, MediaKeySession: true, MediaQueryList: true, MediaRecorder: true, MediaSource: true, MediaStream: true, MIDIAccess: true, MIDIInput: true, MIDIOutput: true, MIDIPort: true, NetworkInformation: true, Notification: true, OffscreenCanvas: true, OrientationSensor: true, PaymentRequest: true, Performance: true, PermissionStatus: true, PresentationAvailability: true, PresentationConnection: true, PresentationConnectionList: true, PresentationRequest: true, RelativeOrientationSensor: true, RemotePlayback: true, RTCDataChannel: true, DataChannel: true, RTCDTMFSender: true, RTCPeerConnection: true, webkitRTCPeerConnection: true, mozRTCPeerConnection: true, ScreenOrientation: true, Sensor: true, ServiceWorker: true, ServiceWorkerContainer: true, ServiceWorkerRegistration: true, SharedWorker: true, SpeechRecognition: true, SpeechSynthesis: true, SpeechSynthesisUtterance: true, VR: true, VRDevice: true, VRDisplay: true, VRSession: true, VisualViewport: true, WebSocket: true, Window: true, DOMWindow: true, Worker: true, WorkerPerformance: true, BluetoothDevice: true, BluetoothRemoteGATTCharacteristic: true, Clipboard: true, MojoInterfaceInterceptor: true, USB: true, IDBDatabase: true, IDBOpenDBRequest: true, IDBVersionChangeRequest: true, IDBRequest: true, IDBTransaction: true, AnalyserNode: true, RealtimeAnalyserNode: true, AudioBufferSourceNode: true, AudioDestinationNode: true, AudioNode: true, AudioScheduledSourceNode: true, AudioWorkletNode: true, BiquadFilterNode: true, ChannelMergerNode: true, AudioChannelMerger: true, ChannelSplitterNode: true, AudioChannelSplitter: true, ConstantSourceNode: true, ConvolverNode: true, DelayNode: true, DynamicsCompressorNode: true, GainNode: true, AudioGainNode: true, IIRFilterNode: true, MediaElementAudioSourceNode: true, MediaStreamAudioDestinationNode: true, MediaStreamAudioSourceNode: true, OscillatorNode: true, Oscillator: true, PannerNode: true, AudioPannerNode: true, webkitAudioPannerNode: true, ScriptProcessorNode: true, JavaScriptAudioNode: true, StereoPannerNode: true, WaveShaperNode: true, EventTarget: false, File: true, FileList: true, FileWriter: true, HTMLFormElement: true, Gamepad: true, History: true, HTMLCollection: true, HTMLFormControlsCollection: true, HTMLOptionsCollection: true, ImageData: true, Location: true, MediaDeviceInfo: true, MediaList: true, CanvasCaptureMediaStreamTrack: true, MediaStreamTrack: true, MessageEvent: true, MessagePort: true, MIDIInputMap: true, MIDIOutputMap: true, MimeType: true, MimeTypeArray: true, Document: true, DocumentFragment: true, HTMLDocument: true, ShadowRoot: true, XMLDocument: true, Attr: true, DocumentType: true, Node: false, NodeList: true, RadioNodeList: true, Plugin: true, PluginArray: true, RTCStatsReport: true, HTMLSelectElement: true, SharedArrayBuffer: true, SourceBuffer: true, SourceBufferList: true, SpeechGrammar: true, SpeechGrammarList: true, SpeechRecognitionResult: true, Storage: true, CSSStyleSheet: true, StyleSheet: true, TextTrack: true, TextTrackCue: true, VTTCue: true, TextTrackCueList: true, TextTrackList: true, TimeRanges: true, Touch: true, TouchList: true, TrackDefaultList: true, HTMLTrackElement: true, URL: true, VideoTrack: true, VideoTrackList: true, ServiceWorkerGlobalScope: true, SharedWorkerGlobalScope: true, WorkerGlobalScope: false, CSSRuleList: true, ClientRect: true, DOMRect: true, GamepadList: true, NamedNodeMap: true, MozNamedAttrMap: true, SpeechRecognitionResultList: true, StyleSheetList: true, SVGLength: true, SVGLengthList: true, SVGNumber: true, SVGNumberList: true, SVGPointList: true, SVGStringList: true, SVGTransform: true, SVGTransformList: true, AudioBuffer: true, AudioParamMap: true, AudioTrack: true, AudioTrackList: true, AudioContext: true, webkitAudioContext: true, BaseAudioContext: false, OfflineAudioContext: true}); + A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView"; + A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView"; + A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView"; + A.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView"; + A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView"; + A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView"; + A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView"; + A._SourceBufferList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget"; + A._SourceBufferList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget"; + A._TextTrackList_EventTarget_ListMixin.$nativeSuperclassTag = "EventTarget"; + A._TextTrackList_EventTarget_ListMixin_ImmutableListMixin.$nativeSuperclassTag = "EventTarget"; + })(); + Function.prototype.call$1 = function(a) { + return this(a); + }; + Function.prototype.call$2 = function(a, b) { + return this(a, b); + }; + Function.prototype.call$0 = function() { + return this(); + }; + Function.prototype.call$3 = function(a, b, c) { + return this(a, b, c); + }; + Function.prototype.call$4 = function(a, b, c, d) { + return this(a, b, c, d); + }; + Function.prototype.call$1$1 = function(a) { + return this(a); + }; + convertAllToFastObject(holders); + convertToFastObject($); + (function(callback) { + if (typeof document === "undefined") { + callback(null); + return; + } + if (typeof document.currentScript != "undefined") { + callback(document.currentScript); + return; + } + var scripts = document.scripts; + function onLoad(event) { + for (var i = 0; i < scripts.length; ++i) + scripts[i].removeEventListener("load", onLoad, false); + callback(event.target); + } + for (var i = 0; i < scripts.length; ++i) + scripts[i].addEventListener("load", onLoad, false); + })(function(currentScript) { + init.currentScript = currentScript; + var callMain = A.main; + if (typeof dartMainRunner === "function") + dartMainRunner(callMain, []); + else + callMain([]); + }); +})(); + +//# sourceMappingURL=e2ee.worker.dart.js.map diff --git a/example/web/e2ee.worker.dart.js.deps b/example/web/e2ee.worker.dart.js.deps new file mode 100644 index 0000000..481dea1 --- /dev/null +++ b/example/web/e2ee.worker.dart.js.deps @@ -0,0 +1,232 @@ +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/collection.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/algorithms.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/boollist.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/canonicalized_map.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_iterable.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_iterator.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_list.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/combined_wrappers/combined_map.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/comparators.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/empty_unmodifiable_set.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality_map.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/equality_set.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/functions.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_extensions.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_zip.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/list_extensions.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/priority_queue.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/queue_list.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/union_set.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/union_set_controller.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/unmodifiable_wrappers.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/utils.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/wrappers.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/js-0.6.5/lib/js.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/meta-1.8.0/lib/meta.dart +file:///Users/weiweiduan/.pub-cache/hosted/pub.flutter-io.cn/meta-1.8.0/lib/meta_meta.dart +file:///Users/weiweiduan/Desktop/projects/flutter-webrtc/lib/src/web/rtc_transform_stream.dart +file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/.dart_tool/package_config.json +file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/crypto.dart +file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.cryptor.dart +file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.utils.dart +file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart +file:///Users/weiweiduan/bin/flutter/bin/cache/dart-sdk/lib/_internal/dart2js_platform.dill +file:///Users/weiweiduan/bin/flutter/bin/cache/dart-sdk/lib/libraries.json +org-dartlang-sdk:///lib/_http/crypto.dart +org-dartlang-sdk:///lib/_http/embedder_config.dart +org-dartlang-sdk:///lib/_http/http.dart +org-dartlang-sdk:///lib/_http/http_date.dart +org-dartlang-sdk:///lib/_http/http_headers.dart +org-dartlang-sdk:///lib/_http/http_impl.dart +org-dartlang-sdk:///lib/_http/http_parser.dart +org-dartlang-sdk:///lib/_http/http_session.dart +org-dartlang-sdk:///lib/_http/http_testing.dart +org-dartlang-sdk:///lib/_http/overrides.dart +org-dartlang-sdk:///lib/_http/websocket.dart +org-dartlang-sdk:///lib/_http/websocket_impl.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/annotations.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/dart2js_runtime_metrics.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/developer_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/foreign_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/instantiation.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/io_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/isolate_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/regexp_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/async_await_error_codes.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/embedded_names.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/synced/load_library_priority.dart +org-dartlang-sdk:///lib/_internal/js_runtime/lib/typed_data_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/embedded_names.dart +org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart +org-dartlang-sdk:///lib/async/async.dart +org-dartlang-sdk:///lib/async/async_error.dart +org-dartlang-sdk:///lib/async/broadcast_stream_controller.dart +org-dartlang-sdk:///lib/async/deferred_load.dart +org-dartlang-sdk:///lib/async/future.dart +org-dartlang-sdk:///lib/async/future_impl.dart +org-dartlang-sdk:///lib/async/schedule_microtask.dart +org-dartlang-sdk:///lib/async/stream.dart +org-dartlang-sdk:///lib/async/stream_controller.dart +org-dartlang-sdk:///lib/async/stream_impl.dart +org-dartlang-sdk:///lib/async/stream_pipe.dart +org-dartlang-sdk:///lib/async/stream_transformers.dart +org-dartlang-sdk:///lib/async/timer.dart +org-dartlang-sdk:///lib/async/zone.dart +org-dartlang-sdk:///lib/collection/collection.dart +org-dartlang-sdk:///lib/collection/collections.dart +org-dartlang-sdk:///lib/collection/hash_map.dart +org-dartlang-sdk:///lib/collection/hash_set.dart +org-dartlang-sdk:///lib/collection/iterable.dart +org-dartlang-sdk:///lib/collection/iterator.dart +org-dartlang-sdk:///lib/collection/linked_hash_map.dart +org-dartlang-sdk:///lib/collection/linked_hash_set.dart +org-dartlang-sdk:///lib/collection/linked_list.dart +org-dartlang-sdk:///lib/collection/list.dart +org-dartlang-sdk:///lib/collection/maps.dart +org-dartlang-sdk:///lib/collection/queue.dart +org-dartlang-sdk:///lib/collection/set.dart +org-dartlang-sdk:///lib/collection/splay_tree.dart +org-dartlang-sdk:///lib/convert/ascii.dart +org-dartlang-sdk:///lib/convert/base64.dart +org-dartlang-sdk:///lib/convert/byte_conversion.dart +org-dartlang-sdk:///lib/convert/chunked_conversion.dart +org-dartlang-sdk:///lib/convert/codec.dart +org-dartlang-sdk:///lib/convert/convert.dart +org-dartlang-sdk:///lib/convert/converter.dart +org-dartlang-sdk:///lib/convert/encoding.dart +org-dartlang-sdk:///lib/convert/html_escape.dart +org-dartlang-sdk:///lib/convert/json.dart +org-dartlang-sdk:///lib/convert/latin1.dart +org-dartlang-sdk:///lib/convert/line_splitter.dart +org-dartlang-sdk:///lib/convert/string_conversion.dart +org-dartlang-sdk:///lib/convert/utf.dart +org-dartlang-sdk:///lib/core/annotations.dart +org-dartlang-sdk:///lib/core/bigint.dart +org-dartlang-sdk:///lib/core/bool.dart +org-dartlang-sdk:///lib/core/comparable.dart +org-dartlang-sdk:///lib/core/core.dart +org-dartlang-sdk:///lib/core/date_time.dart +org-dartlang-sdk:///lib/core/double.dart +org-dartlang-sdk:///lib/core/duration.dart +org-dartlang-sdk:///lib/core/enum.dart +org-dartlang-sdk:///lib/core/errors.dart +org-dartlang-sdk:///lib/core/exceptions.dart +org-dartlang-sdk:///lib/core/function.dart +org-dartlang-sdk:///lib/core/int.dart +org-dartlang-sdk:///lib/core/invocation.dart +org-dartlang-sdk:///lib/core/iterable.dart +org-dartlang-sdk:///lib/core/iterator.dart +org-dartlang-sdk:///lib/core/list.dart +org-dartlang-sdk:///lib/core/map.dart +org-dartlang-sdk:///lib/core/null.dart +org-dartlang-sdk:///lib/core/num.dart +org-dartlang-sdk:///lib/core/object.dart +org-dartlang-sdk:///lib/core/pattern.dart +org-dartlang-sdk:///lib/core/print.dart +org-dartlang-sdk:///lib/core/record.dart +org-dartlang-sdk:///lib/core/regexp.dart +org-dartlang-sdk:///lib/core/set.dart +org-dartlang-sdk:///lib/core/sink.dart +org-dartlang-sdk:///lib/core/stacktrace.dart +org-dartlang-sdk:///lib/core/stopwatch.dart +org-dartlang-sdk:///lib/core/string.dart +org-dartlang-sdk:///lib/core/string_buffer.dart +org-dartlang-sdk:///lib/core/string_sink.dart +org-dartlang-sdk:///lib/core/symbol.dart +org-dartlang-sdk:///lib/core/type.dart +org-dartlang-sdk:///lib/core/uri.dart +org-dartlang-sdk:///lib/core/weak.dart +org-dartlang-sdk:///lib/developer/developer.dart +org-dartlang-sdk:///lib/developer/extension.dart +org-dartlang-sdk:///lib/developer/profiler.dart +org-dartlang-sdk:///lib/developer/service.dart +org-dartlang-sdk:///lib/developer/timeline.dart +org-dartlang-sdk:///lib/html/dart2js/html_dart2js.dart +org-dartlang-sdk:///lib/html/html_common/conversions.dart +org-dartlang-sdk:///lib/html/html_common/conversions_dart2js.dart +org-dartlang-sdk:///lib/html/html_common/css_class_set.dart +org-dartlang-sdk:///lib/html/html_common/device.dart +org-dartlang-sdk:///lib/html/html_common/filtered_element_list.dart +org-dartlang-sdk:///lib/html/html_common/html_common_dart2js.dart +org-dartlang-sdk:///lib/html/html_common/lists.dart +org-dartlang-sdk:///lib/html/html_common/metadata.dart +org-dartlang-sdk:///lib/indexed_db/dart2js/indexed_db_dart2js.dart +org-dartlang-sdk:///lib/internal/async_cast.dart +org-dartlang-sdk:///lib/internal/bytes_builder.dart +org-dartlang-sdk:///lib/internal/cast.dart +org-dartlang-sdk:///lib/internal/errors.dart +org-dartlang-sdk:///lib/internal/internal.dart +org-dartlang-sdk:///lib/internal/iterable.dart +org-dartlang-sdk:///lib/internal/linked_list.dart +org-dartlang-sdk:///lib/internal/list.dart +org-dartlang-sdk:///lib/internal/patch.dart +org-dartlang-sdk:///lib/internal/print.dart +org-dartlang-sdk:///lib/internal/sort.dart +org-dartlang-sdk:///lib/internal/symbol.dart +org-dartlang-sdk:///lib/io/common.dart +org-dartlang-sdk:///lib/io/data_transformer.dart +org-dartlang-sdk:///lib/io/directory.dart +org-dartlang-sdk:///lib/io/directory_impl.dart +org-dartlang-sdk:///lib/io/embedder_config.dart +org-dartlang-sdk:///lib/io/eventhandler.dart +org-dartlang-sdk:///lib/io/file.dart +org-dartlang-sdk:///lib/io/file_impl.dart +org-dartlang-sdk:///lib/io/file_system_entity.dart +org-dartlang-sdk:///lib/io/io.dart +org-dartlang-sdk:///lib/io/io_resource_info.dart +org-dartlang-sdk:///lib/io/io_service.dart +org-dartlang-sdk:///lib/io/io_sink.dart +org-dartlang-sdk:///lib/io/link.dart +org-dartlang-sdk:///lib/io/namespace_impl.dart +org-dartlang-sdk:///lib/io/network_profiling.dart +org-dartlang-sdk:///lib/io/overrides.dart +org-dartlang-sdk:///lib/io/platform.dart +org-dartlang-sdk:///lib/io/platform_impl.dart +org-dartlang-sdk:///lib/io/process.dart +org-dartlang-sdk:///lib/io/secure_server_socket.dart +org-dartlang-sdk:///lib/io/secure_socket.dart +org-dartlang-sdk:///lib/io/security_context.dart +org-dartlang-sdk:///lib/io/service_object.dart +org-dartlang-sdk:///lib/io/socket.dart +org-dartlang-sdk:///lib/io/stdio.dart +org-dartlang-sdk:///lib/io/string_transformer.dart +org-dartlang-sdk:///lib/io/sync_socket.dart +org-dartlang-sdk:///lib/isolate/capability.dart +org-dartlang-sdk:///lib/isolate/isolate.dart +org-dartlang-sdk:///lib/js/_js.dart +org-dartlang-sdk:///lib/js/_js_annotations.dart +org-dartlang-sdk:///lib/js/_js_client.dart +org-dartlang-sdk:///lib/js/js.dart +org-dartlang-sdk:///lib/js_util/js_util.dart +org-dartlang-sdk:///lib/math/math.dart +org-dartlang-sdk:///lib/math/point.dart +org-dartlang-sdk:///lib/math/random.dart +org-dartlang-sdk:///lib/math/rectangle.dart +org-dartlang-sdk:///lib/svg/dart2js/svg_dart2js.dart +org-dartlang-sdk:///lib/typed_data/typed_data.dart +org-dartlang-sdk:///lib/typed_data/unmodifiable_typed_data.dart +org-dartlang-sdk:///lib/web_audio/dart2js/web_audio_dart2js.dart +org-dartlang-sdk:///lib/web_gl/dart2js/web_gl_dart2js.dart \ No newline at end of file diff --git a/example/web/e2ee.worker.dart.js.map b/example/web/e2ee.worker.dart.js.map new file mode 100644 index 0000000..ef6d3c1 --- /dev/null +++ b/example/web/e2ee.worker.dart.js.map @@ -0,0 +1,16 @@ +{ + "version": 3, + "engine": "v2", + "file": "e2ee.worker.dart.js", + "sourceRoot": "", + "sources": ["org-dartlang-sdk:///lib/internal/errors.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/collection/iterable.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/convert/base64.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/core/date_time.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/core/object.dart","org-dartlang-sdk:///lib/core/print.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/html/dart2js/html_dart2js.dart","org-dartlang-sdk:///lib/html/html_common/conversions_dart2js.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","../../web/crypto.dart","../../web/e2ee.cryptor.dart","../../web/e2ee.worker.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_patch.dart","../../../../../../.pub-cache/hosted/pub.flutter-io.cn/collection-1.17.0/lib/src/iterable_extensions.dart","../../web/e2ee.utils.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/internal/bytes_builder.dart","org-dartlang-sdk:///lib/internal/list.dart","org-dartlang-sdk:///lib/internal/symbol.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/constant_map.dart","org-dartlang-sdk:///lib/core/enum.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/html/html_common/conversions.dart","org-dartlang-sdk:///lib/js_util/js_util.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart","org-dartlang-sdk:///lib/svg/dart2js/svg_dart2js.dart","org-dartlang-sdk:///lib/web_audio/dart2js/web_audio_dart2js.dart","org-dartlang-sdk:///lib/convert/codec.dart","org-dartlang-sdk:///lib/async/future.dart","org-dartlang-sdk:///lib/typed_data/typed_data.dart","../../../../flutter-webrtc/lib/src/web/rtc_transform_stream.dart"], + "names": ["LateError.fieldNI","SystemHash.combine","SystemHash.finish","checkNotNullable","SubListIterable","MappedIterable","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.objectTypeName","Primitives._objectTypeNameNewRti","Primitives.stringFromNativeUint8List","Primitives.lazyAsJsDate","Primitives.getYear","Primitives.getMonth","Primitives.getDay","Primitives.getHours","Primitives.getMinutes","Primitives.getSeconds","Primitives.getMilliseconds","Primitives.functionNoSuchMethod","createUnmangledInvocationMirror","Primitives.applyFunction","Primitives._generalApplyFunction","JsLinkedHashMap.isNotEmpty","iae","ioore","diagnoseIndexError","diagnoseRangeError","argumentErrorValue","wrapException","toStringWrapper","throwExpression","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","fillLiteralMap","invokeClosure","convertDartClosureToJS","Closure.fromTearOff","Closure._computeSignatureFunctionNewRti","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","boolConversionCheck","assertThrow","throwCyclicInit","getIsolateAffinityTag","defineProperty","lookupAndCacheInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","lookupInterceptor","initHooks","applyHooksTransformer","quoteStringForRegExp","_ensureNativeList","NativeByteData","NativeUint8List","NativeUint8List.fromList","NativeUint8List.view","_checkValidIndex","_checkValidRange","Rti._getQuestionFromStar","Rti._getFutureFromFutureOr","Rti._isUnionOfFunctionType","Rti._getCanonicalRecipe","findType","_substitute","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","_isClosure","instanceType","_isDartObject","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","createRuntimeType","_Type","typeLiteral","_installSpecializedIsTest","_finishIsFn","_installSpecializedAsCheck","_nullIs","_generalIsTestImplementation","_generalNullableIsTestImplementation","_isTestViaProperty","_isListTestViaProperty","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_failedAsCheck","_Error.compose","_TypeError.fromMessage","_TypeError.forType","_isObject","_asObject","_isTop","_asTop","_isBool","_asBool","_asBoolS","_asBoolQ","_asDouble","_asDoubleS","_asDoubleQ","_isInt","_asInt","_asIntS","_asIntQ","_isNum","_asNum","_asNumS","_asNumQ","_isString","_asString","_asStringS","_asStringQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","isTopType","Rti._getReturnType","_rtiToString","Rti._getGenericFunctionParameterIndex","_unminifyOrTag","_Universe.findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._lookupStarRti","_Universe._canonicalRecipeOfStar","_Universe._createStarRti","_Universe._lookupQuestionRti","_Universe._canonicalRecipeOfQuestion","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._canonicalRecipeOfFutureOr","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._canonicalRecipeOfBinding","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._canonicalRecipeOfGenericFunction","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.pushStackFrame","_Parser.handleTypeArguments","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.handleNamedGroup","_Parser.collectNamed","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","_isSubtype","_isFunctionSubtype","_isInterfaceSubtype","Rti._getInterfaceTypeArguments","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isStrongTopType","_Utils.objectAssign","_Utils.newArrayOrEmpty","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","_TimerImpl","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError","AsyncError.defaultStackTrace","_Future._chainCoreFuture","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","scheduleMicrotask","StreamIterator","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootScheduleMicrotask","_HashMap._getTableEntry","_HashMap._setTableEntry","_HashMap._newHashTable","LinkedHashMap._literal","LinkedHashMap._empty","IterableBase.iterableToShortString","IterableBase.iterableToFullString","_isToStringVisiting","_iterablePartsToStrings","MapBase.mapToString","_Base64Encoder.encodeChunk","_Base64Decoder.decodeChunk","_Base64Decoder._allocateBuffer","_Base64Decoder._trimPaddingChars","_Base64Decoder._checkPadding","Error._objectToString","Error._throw","List.filled","List.of","List._of","String.fromCharCodes","StringBuffer._writeAll","NoSuchMethodError._","DateTime._fourDigits","DateTime._threeDigits","DateTime._twoDigits","Error.safeToString","AssertionError","ArgumentError","ArgumentError.value","RangeError.value","RangeError.range","RangeError.checkValidRange","RangeError.checkNotNegative","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","Exception","FormatException","Object.hash","print","_EventStreamSubscription","_wrapZone","_convertNativeToDart_Value","convertNativeToDart_Dictionary","isJavaScriptSimpleObject","jsify","_convertDataTree","promiseToFuture","_Completer.future","Completer","jsArrayBufferFrom","impportKeyFromRawData","KeyOptions","findNALUIndices","FrameCryptor","main","DedicatedWorkerGlobalScope.onMessage","printString","throwLateFieldNI","throwLateFieldADI","_convertDartFunctionFast","_callDartFunctionFast","allowInterop","IterableExtension.firstWhereOrNull","getAlgoOptions","makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","cacheInterceptorOnConstructor","JSArray.fixed","JSArray.markFixed","JSArray.markFixedList","Interceptor.hashCode","Interceptor.==","Interceptor.toString","Interceptor.noSuchMethod","JSBool.toString","JSBool.hashCode","JSNull.==","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.hashCode","LegacyJavaScriptObject.toString","JavaScriptFunction.toString","JSArray.add","JSArray._removeWhere","JSArray.addAll","JSArray._addAllFromArray","JSArray.map","JSArray.skip","JSArray.elementAt","JSArray.toString","JSArray.iterator","JSArray.hashCode","JSArray.length","JSArray.[]","JSArray.[]=","ArrayIterator.current","ArrayIterator.moveNext","ArrayIterator._current","JSNumber.toRadixString","JSNumber.toString","JSNumber.hashCode","JSNumber.%","JSNumber._tdivFast","JSNumber._tdivSlow","JSNumber._shrOtherPositive","JSNumber._shrBothPositive","JSString.codeUnitAt","JSString._codeUnitAt","JSString.+","JSString.substring","JSString.*","JSString.toString","JSString.hashCode","JSString.length","JSString.[]","_CopyingBytesBuilder.add","_CopyingBytesBuilder._grow","_CopyingBytesBuilder.toBytes","Uint8List.view","_CopyingBytesBuilder.length","LateError.toString","CodeUnits.[]","CodeUnits.length","ListIterable.iterator","ListIterable.map","SubListIterable._endIndex","SubListIterable._startIndex","SubListIterable.length","SubListIterable.elementAt","SubListIterable.toList","ListIterator.current","ListIterator.moveNext","ListIterator._current","MappedIterable.iterator","MappedIterable.length","MappedIterator.moveNext","MappedIterator.current","MappedIterator._current","MappedListIterable.length","MappedListIterable.elementAt","WhereIterable.iterator","WhereIterable.map","WhereIterator.moveNext","WhereIterator.current","UnmodifiableListMixin.[]=","Symbol.hashCode","Symbol.toString","Symbol.==","ConstantMap.toString","ConstantStringMap.length","ConstantStringMap.containsKey","ConstantStringMap.[]","ConstantStringMap.forEach","ConstantStringMap.keys","_ConstantMapKeyIterable.iterator","_ConstantMapKeyIterable.length","JSInvocationMirror.memberName","JSInvocationMirror.positionalArguments","JSInvocationMirror.namedArguments","Primitives.functionNoSuchMethod.","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","RuntimeError.toString","_AssertionError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.containsKey","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","LinkedHashMapKeyIterable.length","LinkedHashMapKeyIterable.iterator","LinkedHashMapKeyIterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","LinkedHashMapKeyIterator._current","initHooks.","NativeTypedData._invalidPosition","NativeTypedData._checkPosition","NativeByteData._getUint32","NativeByteData.setInt8","NativeByteData._setUint32","NativeTypedArray.length","NativeTypedArray._setRangeFast","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeTypedArrayOfInt.setRange","NativeInt16List.[]","NativeInt32List.[]","NativeInt8List.[]","NativeUint16List.[]","NativeUint32List.[]","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.length","NativeUint8List.[]","NativeUint8List.sublist","NativeUint8List.sublist[function-entry$1]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_AsyncCompleter.complete[function-entry$0]","_FutureListener.matchesErrorTest","_FutureListener._errorTest","_FutureListener.handleError","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._asyncCompleteWithValue.","_Future._chainFuture.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_FutureListener._whenCompleteAction","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_FutureListener._onValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_Future._complete","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.bindCallbackGuarded","_RootZone.bindUnaryCallbackGuarded","_RootZone.[]","_RootZone.run","_RootZone.runUnary","_RootZone.runBinary","_RootZone.registerBinaryCallback","_RootZone.bindCallbackGuarded.","_RootZone.bindUnaryCallbackGuarded.","_RootZone_bindUnaryCallbackGuarded_closure","_HashMap.keys","_HashMap.length","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_IdentityHashMap._computeHashCode","_HashMap.forEach","_HashMap._computeKeys","_HashMap._getBucket","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","_HashMapKeyIterator._current","ListMixin.iterator","ListMixin.elementAt","ListMixin.map","ListMixin.skip","ListMixin.setRange","ListMixin.toString","MapBase.mapToString.","StringBuffer.write","MapMixin.forEach","MapMixin.length","MapMixin.toString","MapView.[]","MapView.forEach","MapView.length","MapView.keys","MapView.toString","Base64Encoder.convert","_Base64Encoder.encode","Base64Decoder.convert","_Base64Decoder.decode","NoSuchMethodError.toString.","_symbolToString","DateTime.==","DateTime.hashCode","DateTime.toString","_Enum.toString","Error.stackTrace","AssertionError.toString","NullThrownError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","NoSuchMethodError.toString","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","CyclicInitializationError.toString","_Exception.toString","FormatException.toString","Iterable.map","Iterable.length","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.noSuchMethod","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","AccessibleNodeList.length","AnchorElement.toString","AreaElement.toString","CharacterData.length","CssPerspective.length","CssStyleDeclaration.length","CssTransformValue.length","CssUnparsedValue.length","DataTransferItem.kind","DataTransferItemList.[]","DataTransferItemList.length","DedicatedWorkerGlobalScope.postMessage","convertDartToNative_PrepareForStructuredClone","DomException.toString","DomRectList.length","DomRectList.[]","DomRectList.[]=","DomRectList.elementAt","DomRectReadOnly.toString","DomRectReadOnly.==","DomRectReadOnly.hashCode","DomRectReadOnly._height","DomRectReadOnly.height","DomRectReadOnly._width","DomRectReadOnly.width","DomStringList.length","DomStringList.[]","DomStringList.[]=","DomStringList.elementAt","DomTokenList.length","Element.toString","EventTarget.addEventListener","EventTarget._addEventListener","FileList.length","FileList.[]","FileList.[]=","FileList.elementAt","FileWriter.length","FormElement.length","History.length","HtmlCollection.length","HtmlCollection.[]","HtmlCollection.[]=","HtmlCollection.elementAt","Location.toString","MediaDeviceInfo.kind","MediaList.length","MediaStreamTrack.kind","MidiInputMap.[]","MidiInputMap.forEach","MidiInputMap.keys","MidiInputMap.length","MidiInputMap.keys.","MidiOutputMap.[]","MidiOutputMap.forEach","MidiOutputMap.keys","MidiOutputMap.length","MidiOutputMap.keys.","MimeTypeArray.length","MimeTypeArray.[]","MimeTypeArray.[]=","MimeTypeArray.elementAt","Node.toString","NodeList.length","NodeList.[]","NodeList.[]=","NodeList.elementAt","Plugin.length","PluginArray.length","PluginArray.[]","PluginArray.[]=","PluginArray.elementAt","RtcStatsReport.[]","RtcStatsReport.forEach","RtcStatsReport.keys","RtcStatsReport.length","RtcStatsReport.keys.","SelectElement.length","SourceBufferList.length","SourceBufferList.[]","SourceBufferList.[]=","SourceBufferList.elementAt","SpeechGrammarList.length","SpeechGrammarList.[]","SpeechGrammarList.[]=","SpeechGrammarList.elementAt","SpeechRecognitionResult.length","Storage.[]","Storage.forEach","Storage.keys","Storage.length","Storage.keys.","TextTrack.kind","TextTrackCueList.length","TextTrackCueList.[]","TextTrackCueList.[]=","TextTrackCueList.elementAt","TextTrackList.length","TextTrackList.[]","TextTrackList.[]=","TextTrackList.elementAt","TimeRanges.length","TouchList.length","TouchList.[]","TouchList.[]=","TouchList.elementAt","TrackDefaultList.length","TrackElement.kind","Url.toString","VideoTrack.kind","VideoTrackList.length","_CssRuleList.length","_CssRuleList.[]","_CssRuleList.[]=","_CssRuleList.elementAt","_DomRect.toString","_DomRect.==","_DomRect.hashCode","_DomRect._height","_DomRect.height","_DomRect._width","_DomRect.width","_GamepadList.length","_GamepadList.[]","_GamepadList.[]=","_GamepadList.elementAt","_NamedNodeMap.length","_NamedNodeMap.[]","_NamedNodeMap.[]=","_NamedNodeMap.elementAt","_SpeechRecognitionResultList.length","_SpeechRecognitionResultList.[]","_SpeechRecognitionResultList.[]=","_SpeechRecognitionResultList.elementAt","_StyleSheetList.length","_StyleSheetList.[]","_StyleSheetList.[]=","_StyleSheetList.elementAt","_EventStreamSubscription.","ImmutableListMixin.iterator","FixedSizeListIterator.moveNext","FixedSizeListIterator.current","FixedSizeListIterator._current","_StructuredClone.findSlot","_StructuredClone.walk","convertDartToNative_DateTime","_StructuredClone.copyList","_StructuredClone.walk.","_AcceptStructuredClone.findSlot","_AcceptStructuredClone.walk","DateTime._withValue","convertNativeToDart_DateTime","_AcceptStructuredClone.walk.","_StructuredCloneDart2Js.forEachObjectKey","_AcceptStructuredCloneDart2Js.forEachJsField","_convertDataTree._convert","promiseToFuture.","NullRejectionException.toString","_JSSecureRandom","_JSSecureRandom.nextInt","LengthList.length","LengthList.[]","LengthList.[]=","LengthList.elementAt","NumberList.length","NumberList.[]","NumberList.[]=","NumberList.elementAt","PointList.length","StringList.length","StringList.[]","StringList.[]=","StringList.elementAt","TransformList.length","TransformList.[]","TransformList.[]=","TransformList.elementAt","AudioBuffer.length","AudioParamMap.[]","AudioParamMap.forEach","AudioParamMap.keys","AudioParamMap.length","AudioParamMap.keys.","AudioTrack.kind","AudioTrackList.length","OfflineAudioContext.length","KeyOptions.toString","CryptorError._enumToString","FrameCryptor.kind","FrameCryptor.ratchetKey","FrameCryptor.ratchetMaterial","FrameCryptor.getKeySet","FrameCryptor.setKey","FrameCryptor.setKeySetFromMaterial","FrameCryptor.deriveKeys","FrameCryptor.ratchet","FrameCryptor.setupTransform","FrameCryptor.setupTransform[function-entry$0$kind$operation$readable$trackId$writable]","FrameCryptor.getUnencryptedBytes","FrameCryptor.encodeFunction","FrameCryptor.makeIv","BytesBuilder","FrameCryptor.decodeFunction","FrameCryptor.ratchetKey.","FrameCryptor.ratchetKey..","FrameCryptor.ratchetKey...","main.","PropsRTCTransformEvent.transformer","PropsRTCRtpScriptTransformer.options","PropsRTCRtpScriptTransformer.readable","PropsRTCRtpScriptTransformer.writable","main..","convertNativeToDart_AcceptStructuredClone","base64Decode","Base64Codec.decode","JSArray.where","JSArray.removeWhere","base64Encode","Codec.encode","DART_CLOSURE_PROPERTY_NAME","_CopyingBytesBuilder._emptyList","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","_Base64Decoder._inverseAlphabet","_Base64Decoder._emptyBuffer","_hashSeed","Random._secureRandom","keyProviderOptions","JSString.codeUnits","patchInstance","JS_INTEROP_INTERCEPTOR_TAG","main_closure","","LateError","NullThrownError","mapToString","StringBuffer","_toStringVisiting","MapBase_mapToString_closure","_empty","LinkedHashMapCell","safeToString","_objectToString","Closure","objectTypeName","_objectTypeNameNewRti","Object","JsLinkedHashMap","hash","combine","finish","eval","create","parse","handleDigit","handleIdentifier","toType","_lookupGenericFunctionParameterRti","_lookupTerminalRti","toTypes","_lookupInterfaceRti","_lookupGenericFunctionRti","_lookupBindingRti","handleExtendedOperations","_lookupStarRti","_lookupQuestionRti","_lookupFutureOrRti","handleArguments","toTypesNamed","collectArray","_FunctionParameters","_lookupFunctionRti","_lookupRecordRti","_canonicalRecipeJoin","Rti","_installTypeTests","_canonicalRecipeJoinNamed","_createFutureOrRti","Future","_createQuestionRti","_getQuestionFromStar","_createStarRti","_createGenericFunctionRti","newArrayOrEmpty","indexToType","findRule","_getCanonicalRecipe","evalInEnvironment","_identityHashCodeProperty","MapMixin","ArrayIterator","JSArray","LinkedHashMapKeyIterable","iterableToShortString","_writeAll","FixedSizeListIterator","ImmutableListMixin","withLength","IndexError","List","ListIterator","ListMixin","checkNotNegative","range","RangeError","value","_Future","_current","_propagateToListeners","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleError","_chainCoreFuture","_Future__prependListeners_closure","_AsyncCallbackEntry","_lastCallback","_nextCallback","_isInCallbackLoop","_lastPriorityCallback","_initializeScheduleImmediate","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__initializeScheduleImmediate_closure","_TimerImpl_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_Exception","_RootZone_bindCallbackGuarded_closure","ExceptionAndStackTrace","_StackTrace","NullThrownFromJavaScriptException","NullError","UnknownJsTypeError","StackOverflowError","extractPattern","TypeErrorDecoder","provokePropertyErrorOn","provokeCallErrorOn","defaultStackTrace","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_FutureListener","_Future__addListener_closure","_rootHandleError_closure","_throw","Iterable","AudioParamMap_keys_closure","Storage_keys_closure","RtcStatsReport_keys_closure","MidiOutputMap_keys_closure","MidiInputMap_keys_closure","iterableToFullString","initNativeDispatchFlag","_JS_INTEROP_INTERCEPTOR_TAG","getTagFunction","dispatchRecordsForInstanceTags","interceptorsForUncacheableTags","alternateTagFunction","JavaScriptIndexingBehavior","prototypeForTagFunction","initHooks_closure","CyclicInitializationError","fromTearOff","StaticClosure","BoundClosure","forwardCallTo","_computeSignatureFunctionNewRti","evalRecipe","forwardInterceptedCallTo","cspForwardCall","receiverOf","_interceptorFieldNameCache","_computeFieldNamed","_receiverFieldNameCache","cspForwardInterceptedCall","interceptorOf","RuntimeError","markFixedList","_wrapJsFunctionForAsync_closure","_StreamIterator","StreamSubscription","_awaitOnObject_closure","forType","_TypeError","compose","fromMessage","_isUnionOfFunctionType","_getFutureFromFutureOr","bind","findErasedType","_AsyncAwaitCompleter","_Future__asyncCompleteError_closure","_Future__chainFuture_closure","_Future__chainForeignFuture_closure","_Future__asyncCompleteWithValue_closure","_EventStreamSubscription_closure","_AcceptStructuredCloneDart2Js","participantCryptors","WhereIterable","bool","main__closure","of","_literal","IterableExtension|firstWhereOrNull","view","_CopyingBytesBuilder","KeySet","_AsyncCompleter","promiseToFuture_closure","NullRejectionException","_AssertionError","fieldNI","checkValidRange","ListIterable","fixed","filled","markFixed","_convertDataTree__convert","_IdentityHashMap","_getTableEntry","_HashMapKeyIterable","_HashMapKeyIterator","MappedListIterable","MappedIterator","Iterator","EfficientLengthMappedIterable","_newHashTable","_setTableEntry","FrameCryptor_ratchetKey_closure","FrameCryptor_ratchetKey__closure","FrameCryptor_ratchetKey___closure","WhereIterator","_StructuredCloneDart2Js","DateTime","_StructuredClone_walk_closure","Codec","_Base64Encoder","fromCharCodes","stringFromNativeUint8List","encodeChunk","LinkedHashMap","_of","CodeUnits","fromList","UnmodifiableListMixin","_Base64Decoder","_checkPadding","_allocateBuffer","decodeChunk","_trimPaddingChars","_AcceptStructuredClone_walk_closure","getYear","_fourDigits","getMonth","_twoDigits","getDay","getHours","getMinutes","getSeconds","getMilliseconds","_threeDigits","lazyAsJsDate","applyFunction","_generalApplyFunction","functionNoSuchMethod","Primitives_functionNoSuchMethod_closure","JSInvocationMirror","Symbol","_","NoSuchMethodError_toString_closure","NoSuchMethodError","ConstantMapView","_ConstantMapKeyIterable","ConstantStringMap","Map","objectAssign","JS_CONST","Interceptor","JSBool","Null","JSNull","JavaScriptObject","JSObject","LegacyJavaScriptObject","PlainJavaScriptObject","UnknownJavaScriptObject","Function","JavaScriptFunction","EfficientLengthIterable","JSIndexable","JSUnmodifiableArray","double","num","JSNumber","int","JSInt","JSNumNotInt","String","JSString","SentinelValue","FixedLengthListMixin","UnmodifiableListBase","ConstantMap","Invocation","StackTrace","Closure0Args","Closure2Args","TearOffClosure","_Required","NativeByteBuffer","ByteBuffer","NativeTypedData","ByteData","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeUint16List","NativeUint32List","NativeUint8ClampedList","Uint8List","_Error","TypeError","Error","_Completer","Stream","StreamTransformerBase","Zone","_Zone","_RootZone","_HashMap","ListBase","MapBase","_UnmodifiableMapMixin","MapView","UnmodifiableMapView","Base64Codec","Base64Encoder","Base64Decoder","Converter","_Enum","OutOfMemoryError","_StringStackTrace","HtmlElement","AbortPaymentEvent","AbsoluteOrientationSensor","Accelerometer","AccessibleNode","AccessibleNodeList","AmbientLightSensor","AnchorElement","Animation","AnimationEffectReadOnly","AnimationEffectTiming","AnimationEffectTimingReadOnly","AnimationEvent","AnimationPlaybackEvent","AnimationTimeline","AnimationWorkletGlobalScope","ApplicationCache","ApplicationCacheErrorEvent","AreaElement","AudioElement","AuthenticatorAssertionResponse","AuthenticatorAttestationResponse","AuthenticatorResponse","BRElement","BackgroundFetchClickEvent","BackgroundFetchEvent","BackgroundFetchFailEvent","BackgroundFetchFetch","BackgroundFetchManager","BackgroundFetchRegistration","BackgroundFetchSettledFetch","BackgroundFetchedEvent","BarProp","BarcodeDetector","BaseElement","BatteryManager","BeforeInstallPromptEvent","BeforeUnloadEvent","Blob","BlobEvent","BluetoothRemoteGattDescriptor","Body","BodyElement","BroadcastChannel","BudgetState","ButtonElement","CDataSection","CacheStorage","CanMakePaymentEvent","CanvasCaptureMediaStreamTrack","CanvasElement","CanvasGradient","CanvasPattern","CanvasRenderingContext2D","CharacterData","Client","Clients","ClipboardEvent","CloseEvent","Comment","CompositionEvent","ContentElement","CookieStore","Coordinates","Credential","CredentialUserData","CredentialsContainer","Crypto","CryptoKey","Css","CssCharsetRule","CssConditionRule","CssFontFaceRule","CssGroupingRule","CssImageValue","CssImportRule","CssKeyframeRule","CssKeyframesRule","CssKeywordValue","CssMatrixComponent","CssMediaRule","CssNamespaceRule","CssNumericValue","CssPageRule","CssPerspective","CssPositionValue","CssResourceValue","CssRotation","CssRule","CssScale","CssSkew","CssStyleDeclaration","CssStyleDeclarationBase","CssStyleRule","CssStyleSheet","CssStyleValue","CssSupportsRule","CssTransformComponent","CssTransformValue","CssTranslation","CssUnitValue","CssUnparsedValue","CssVariableReferenceValue","CssViewportRule","CssurlImageValue","CustomElementRegistry","CustomEvent","DListElement","DataElement","DataListElement","DataTransfer","DataTransferItem","DataTransferItemList","DedicatedWorkerGlobalScope","DeprecatedStorageInfo","DeprecatedStorageQuota","DeprecationReport","DetailsElement","DetectedBarcode","DetectedFace","DetectedText","DeviceAcceleration","DeviceMotionEvent","DeviceOrientationEvent","DeviceRotationRate","DialogElement","DirectoryEntry","DirectoryReader","DivElement","Document","DocumentFragment","DocumentOrShadowRoot","DocumentTimeline","DomError","DomException","DomImplementation","DomIterator","DomMatrix","DomMatrixReadOnly","DomParser","DomPoint","DomPointReadOnly","DomQuad","DomRectList","Rectangle","DomRectReadOnly","DomStringList","DomStringMap","DomTokenList","Element","EmbedElement","Entry","ErrorEvent","Event","EventSource","EventTarget","ExtendableEvent","ExtendableMessageEvent","External","FaceDetector","FederatedCredential","FetchEvent","FieldSetElement","File","FileEntry","FileList","FileReader","FileSystem","FileWriter","FocusEvent","FontFace","FontFaceSet","FontFaceSetLoadEvent","FontFaceSource","ForeignFetchEvent","FormData","FormElement","Gamepad","GamepadButton","GamepadEvent","GamepadPose","Geolocation","Geoposition","Gyroscope","HRElement","HashChangeEvent","HeadElement","Headers","HeadingElement","History","HtmlCollection","HtmlDocument","HtmlFormControlsCollection","HtmlHtmlElement","HtmlHyperlinkElementUtils","HtmlOptionsCollection","HttpRequest","HttpRequestEventTarget","HttpRequestUpload","IFrameElement","IdleDeadline","ImageBitmap","ImageBitmapRenderingContext","ImageCapture","ImageData","ImageElement","InputDeviceCapabilities","InputElement","InstallEvent","IntersectionObserver","IntersectionObserverEntry","InterventionReport","KeyboardEvent","KeyframeEffect","KeyframeEffectReadOnly","LIElement","LabelElement","LegendElement","LinearAccelerationSensor","LinkElement","Location","Magnetometer","MapElement","MathMLElement","MediaCapabilities","MediaCapabilitiesInfo","MediaDeviceInfo","MediaDevices","MediaElement","MediaEncryptedEvent","MediaError","MediaKeyMessageEvent","MediaKeySession","MediaKeyStatusMap","MediaKeySystemAccess","MediaKeys","MediaKeysPolicy","MediaList","MediaMetadata","MediaQueryList","MediaQueryListEvent","MediaRecorder","MediaSession","MediaSettingsRange","MediaSource","MediaStream","MediaStreamEvent","MediaStreamTrack","MediaStreamTrackEvent","MemoryInfo","MenuElement","MessageChannel","MessageEvent","MessagePort","MetaElement","Metadata","MeterElement","MidiAccess","MidiConnectionEvent","MidiInput","MidiInputMap","MidiMessageEvent","MidiOutput","MidiOutputMap","MidiPort","MimeType","MimeTypeArray","ModElement","MouseEvent","MutationEvent","MutationObserver","MutationRecord","NavigationPreloadManager","Navigator","NavigatorAutomationInformation","NavigatorConcurrentHardware","NavigatorCookies","NavigatorUserMediaError","NetworkInformation","Node","NodeFilter","NodeIterator","NodeList","NonDocumentTypeChildNode","NonElementParentNode","NoncedElement","Notification","NotificationEvent","OListElement","ObjectElement","OffscreenCanvas","OffscreenCanvasRenderingContext2D","OptGroupElement","OptionElement","OrientationSensor","OutputElement","OverconstrainedError","PageTransitionEvent","PaintRenderingContext2D","PaintSize","PaintWorkletGlobalScope","ParagraphElement","ParamElement","PasswordCredential","Path2D","PaymentAddress","PaymentInstruments","PaymentManager","PaymentRequest","PaymentRequestEvent","PaymentRequestUpdateEvent","PaymentResponse","Performance","PerformanceEntry","PerformanceLongTaskTiming","PerformanceMark","PerformanceMeasure","PerformanceNavigation","PerformanceNavigationTiming","PerformanceObserver","PerformanceObserverEntryList","PerformancePaintTiming","PerformanceResourceTiming","PerformanceServerTiming","PerformanceTiming","PermissionStatus","Permissions","PhotoCapabilities","PictureElement","Plugin","PluginArray","PointerEvent","PopStateEvent","PositionError","PreElement","Presentation","PresentationAvailability","PresentationConnection","PresentationConnectionAvailableEvent","PresentationConnectionCloseEvent","PresentationConnectionList","PresentationReceiver","PresentationRequest","ProcessingInstruction","ProgressElement","ProgressEvent","PromiseRejectionEvent","PublicKeyCredential","PushEvent","PushManager","PushMessageData","PushSubscription","PushSubscriptionOptions","QuoteElement","Range","RelatedApplication","RelativeOrientationSensor","RemotePlayback","ReportBody","ReportingObserver","ResizeObserver","ResizeObserverEntry","RtcCertificate","RtcDataChannel","RtcDataChannelEvent","RtcDtmfSender","RtcDtmfToneChangeEvent","RtcIceCandidate","RtcLegacyStatsReport","RtcPeerConnection","RtcPeerConnectionIceEvent","RtcRtpContributingSource","RtcRtpReceiver","RtcRtpSender","RtcSessionDescription","RtcStatsReport","RtcStatsResponse","RtcTrackEvent","Screen","ScreenOrientation","ScriptElement","ScrollState","ScrollTimeline","SecurityPolicyViolationEvent","SelectElement","Selection","Sensor","SensorErrorEvent","ServiceWorker","ServiceWorkerContainer","ServiceWorkerGlobalScope","ServiceWorkerRegistration","ShadowElement","ShadowRoot","SharedArrayBuffer","SharedWorker","SharedWorkerGlobalScope","SlotElement","SourceBuffer","SourceBufferList","SourceElement","SpanElement","SpeechGrammar","SpeechGrammarList","SpeechRecognition","SpeechRecognitionAlternative","SpeechRecognitionError","SpeechRecognitionEvent","SpeechRecognitionResult","SpeechSynthesis","SpeechSynthesisEvent","SpeechSynthesisUtterance","SpeechSynthesisVoice","StaticRange","Storage","StorageEvent","StorageManager","StyleElement","StyleMedia","StylePropertyMap","StylePropertyMapReadonly","StyleSheet","SyncEvent","SyncManager","TableCaptionElement","TableCellElement","TableColElement","TableElement","TableRowElement","TableSectionElement","TaskAttributionTiming","TemplateElement","Text","TextAreaElement","TextDetector","TextEvent","TextMetrics","TextTrack","TextTrackCue","TextTrackCueList","TextTrackList","TimeElement","TimeRanges","TitleElement","Touch","TouchEvent","TouchList","TrackDefault","TrackDefaultList","TrackElement","TrackEvent","TransitionEvent","TreeWalker","TrustedHtml","TrustedScriptUrl","TrustedUrl","UIEvent","UListElement","UnderlyingSourceBase","UnknownElement","Url","UrlSearchParams","VR","VRCoordinateSystem","VRDevice","VRDeviceEvent","VRDisplay","VRDisplayCapabilities","VRDisplayEvent","VREyeParameters","VRFrameData","VRFrameOfReference","VRPose","VRSession","VRSessionEvent","VRStageBounds","VRStageBoundsPoint","VRStageParameters","ValidityState","VideoElement","VideoPlaybackQuality","VideoTrack","VideoTrackList","VisualViewport","VttCue","VttRegion","WebSocket","WheelEvent","Window","WindowClient","Worker","WorkerGlobalScope","WorkerPerformance","WorkletAnimation","WorkletGlobalScope","XPathEvaluator","XPathExpression","XPathNSResolver","XPathResult","XmlDocument","XmlSerializer","XsltProcessor","_Attr","_Bluetooth","_BluetoothCharacteristicProperties","_BluetoothDevice","_BluetoothRemoteGATTCharacteristic","_BluetoothRemoteGATTServer","_BluetoothRemoteGATTService","_BluetoothUUID","_BudgetService","_Cache","_Clipboard","_CssRuleList","_DOMFileSystemSync","_DirectoryEntrySync","_DirectoryReaderSync","_DocumentType","_DomRect","_EntrySync","_FileEntrySync","_FileReaderSync","_FileWriterSync","_GamepadList","_HTMLAllCollection","_HTMLDirectoryElement","_HTMLFontElement","_HTMLFrameElement","_HTMLFrameSetElement","_HTMLMarqueeElement","_Mojo","_MojoHandle","_MojoInterfaceInterceptor","_MojoInterfaceRequestEvent","_MojoWatcher","_NFC","_NamedNodeMap","_PagePopupController","_Report","_Request","_ResourceProgressEvent","_Response","_SpeechRecognitionResultList","_StyleSheetList","_SubtleCrypto","_USB","_USBAlternateInterface","_USBConfiguration","_USBConnectionEvent","_USBDevice","_USBEndpoint","_USBInTransferResult","_USBInterface","_USBIsochronousInTransferPacket","_USBIsochronousInTransferResult","_USBIsochronousOutTransferPacket","_USBIsochronousOutTransferResult","_USBOutTransferResult","_WorkerLocation","_WorkerNavigator","_Worklet","EventStreamProvider","_EventStream","_StructuredClone","_AcceptStructuredClone","Cursor","CursorWithValue","Database","IdbFactory","Index","KeyRange","ObjectStore","Observation","Observer","ObserverChanges","OpenDBRequest","Request","Transaction","VersionChangeEvent","AElement","Angle","AnimateElement","AnimateMotionElement","AnimateTransformElement","AnimatedAngle","AnimatedBoolean","AnimatedEnumeration","AnimatedInteger","AnimatedLength","AnimatedLengthList","AnimatedNumber","AnimatedNumberList","AnimatedPreserveAspectRatio","AnimatedRect","AnimatedString","AnimatedTransformList","AnimationElement","CircleElement","ClipPathElement","DefsElement","DescElement","DiscardElement","EllipseElement","FEBlendElement","FEColorMatrixElement","FEComponentTransferElement","FECompositeElement","FEConvolveMatrixElement","FEDiffuseLightingElement","FEDisplacementMapElement","FEDistantLightElement","FEFloodElement","FEFuncAElement","FEFuncBElement","FEFuncGElement","FEFuncRElement","FEGaussianBlurElement","FEImageElement","FEMergeElement","FEMergeNodeElement","FEMorphologyElement","FEOffsetElement","FEPointLightElement","FESpecularLightingElement","FESpotLightElement","FETileElement","FETurbulenceElement","FilterElement","ForeignObjectElement","GElement","GeometryElement","GraphicsElement","Length","LengthList","LineElement","LinearGradientElement","MarkerElement","MaskElement","Matrix","MetadataElement","Number","NumberList","PathElement","PatternElement","Point","PointList","PolygonElement","PolylineElement","PreserveAspectRatio","RadialGradientElement","Rect","RectElement","SetElement","StopElement","StringList","SvgElement","SvgSvgElement","SwitchElement","SymbolElement","TSpanElement","TextContentElement","TextElement","TextPathElement","TextPositioningElement","Transform","TransformList","UnitTypes","UseElement","ViewElement","_GradientElement","_SVGComponentTransferFunctionElement","_SVGFEDropShadowElement","_SVGMPathElement","AnalyserNode","AudioBuffer","AudioBufferSourceNode","AudioContext","AudioDestinationNode","AudioListener","AudioNode","AudioParam","AudioParamMap","AudioProcessingEvent","AudioScheduledSourceNode","AudioTrack","AudioTrackList","AudioWorkletGlobalScope","AudioWorkletNode","AudioWorkletProcessor","BaseAudioContext","BiquadFilterNode","ChannelMergerNode","ChannelSplitterNode","ConstantSourceNode","ConvolverNode","DelayNode","DynamicsCompressorNode","GainNode","IirFilterNode","MediaElementAudioSourceNode","MediaStreamAudioDestinationNode","MediaStreamAudioSourceNode","OfflineAudioCompletionEvent","OfflineAudioContext","OscillatorNode","PannerNode","PeriodicWave","ScriptProcessorNode","StereoPannerNode","WaveShaperNode","ActiveInfo","AngleInstancedArrays","Buffer","Canvas","ColorBufferFloat","CompressedTextureAstc","CompressedTextureAtc","CompressedTextureETC1","CompressedTextureEtc","CompressedTexturePvrtc","CompressedTextureS3TC","CompressedTextureS3TCsRgb","ContextEvent","DebugRendererInfo","DebugShaders","DepthTexture","DrawBuffers","EXTsRgb","ExtBlendMinMax","ExtColorBufferFloat","ExtColorBufferHalfFloat","ExtDisjointTimerQuery","ExtDisjointTimerQueryWebGL2","ExtFragDepth","ExtShaderTextureLod","ExtTextureFilterAnisotropic","Framebuffer","GetBufferSubDataAsync","LoseContext","OesElementIndexUint","OesStandardDerivatives","OesTextureFloat","OesTextureFloatLinear","OesTextureHalfFloat","OesTextureHalfFloatLinear","OesVertexArrayObject","Program","Query","Renderbuffer","RenderingContext","RenderingContext2","Sampler","Shader","ShaderPrecisionFormat","Sync","Texture","TimerQueryExt","TransformFeedback","UniformLocation","VertexArrayObject","VertexArrayObjectOes","WebGL","_WebGL2RenderingContextBase","WritableStream","ReadableStream","TransformStream","TransformStreamDefaultController","EncodedStreams","RTCEncodedFrame","RTCEncodedAudioFrame","RTCEncodedVideoFrame","RTCEncodedFrameMetadata","RTCEncodedAudioFrameMetadata","RTCEncodedVideoFrameMetadata","RTCTransformEvent","RTCRtpScriptTransformer","RTCRtpScriptTransform","Promise","Algorithm","AesGcmParams","CryptorError","TransformMessage","EnableTransformMessage","RemoveTransformMessage","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_ListBase&Object&ListMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_CssStyleDeclaration&JavaScriptObject&CssStyleDeclarationBase","_DomRectList&JavaScriptObject&ListMixin","_DomRectList&JavaScriptObject&ListMixin&ImmutableListMixin","_DomStringList&JavaScriptObject&ListMixin","_DomStringList&JavaScriptObject&ListMixin&ImmutableListMixin","_FileList&JavaScriptObject&ListMixin","_FileList&JavaScriptObject&ListMixin&ImmutableListMixin","_HtmlCollection&JavaScriptObject&ListMixin","_HtmlCollection&JavaScriptObject&ListMixin&ImmutableListMixin","_MidiInputMap&JavaScriptObject&MapMixin","_MidiOutputMap&JavaScriptObject&MapMixin","_MimeTypeArray&JavaScriptObject&ListMixin","_MimeTypeArray&JavaScriptObject&ListMixin&ImmutableListMixin","_NodeList&JavaScriptObject&ListMixin","_NodeList&JavaScriptObject&ListMixin&ImmutableListMixin","_PluginArray&JavaScriptObject&ListMixin","_PluginArray&JavaScriptObject&ListMixin&ImmutableListMixin","_RtcStatsReport&JavaScriptObject&MapMixin","_SourceBufferList&EventTarget&ListMixin","_SourceBufferList&EventTarget&ListMixin&ImmutableListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin&ImmutableListMixin","_Storage&JavaScriptObject&MapMixin","_TextTrackCueList&JavaScriptObject&ListMixin","_TextTrackCueList&JavaScriptObject&ListMixin&ImmutableListMixin","_TextTrackList&EventTarget&ListMixin","_TextTrackList&EventTarget&ListMixin&ImmutableListMixin","_TouchList&JavaScriptObject&ListMixin","_TouchList&JavaScriptObject&ListMixin&ImmutableListMixin","__CssRuleList&JavaScriptObject&ListMixin","__CssRuleList&JavaScriptObject&ListMixin&ImmutableListMixin","__GamepadList&JavaScriptObject&ListMixin","__GamepadList&JavaScriptObject&ListMixin&ImmutableListMixin","__NamedNodeMap&JavaScriptObject&ListMixin","__NamedNodeMap&JavaScriptObject&ListMixin&ImmutableListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin&ImmutableListMixin","__StyleSheetList&JavaScriptObject&ListMixin","__StyleSheetList&JavaScriptObject&ListMixin&ImmutableListMixin","_LengthList&JavaScriptObject&ListMixin","_LengthList&JavaScriptObject&ListMixin&ImmutableListMixin","_NumberList&JavaScriptObject&ListMixin","_NumberList&JavaScriptObject&ListMixin&ImmutableListMixin","_StringList&JavaScriptObject&ListMixin","_StringList&JavaScriptObject&ListMixin&ImmutableListMixin","_TransformList&JavaScriptObject&ListMixin","_TransformList&JavaScriptObject&ListMixin&ImmutableListMixin","_AudioParamMap&JavaScriptObject&MapMixin","addRules","addErasedTypes","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_emptyList","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","undefinedCallPattern","undefinedLiteralCallPattern","nullPropertyPattern","nullLiteralPropertyPattern","undefinedPropertyPattern","undefinedLiteralPropertyPattern","_scheduleImmediateClosure","_inverseAlphabet","_emptyBuffer","_secureRandom","Record","getInterceptor$","getInterceptor$x","getInterceptor$asx","async___startMicrotaskLoop$closure","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","getInterceptor$ax","toString","_captured_this_0","future","dart:_js_helper#_box_0","callback","_captured_div_1","_captured_span_2","_captured_f_1","dart:async#_box_1","_captured_sourceResult_1","_captured_hasError_2","listener","_captured_originalSource_0","error","stackTrace","keys","result","_captured_prototypeForTag_0","_captured_getUnknownTag_0","_captured_getTag_0","_captured_protected_0","_captured_bodyFunction_0","_captured_e_1","_captured_s_2","_captured_value_1","_captured_T_1","_captured_onData_0","setupTransform","decodeFunction","_captured_completer_0","setRange","encodeFunction","_captured__convertedObjects_0","_captured_keyIndex_1","trackId","participantId","_captured_c_0","_captured_keySet_1","map","_captured_sb_1","_captured_namedArgumentList_1","_captured_arguments_2","_withValue","dart:_rti#_as","dart:html#_useCapture","dart:_internal#_message","forEach","add","dart:core#_contents","first","dart:_rti#_precomputed1","dart:_rti#_rest","dart:_js_helper#_strings","dart:_js_helper#_newHashTable","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_nums","internalSet","dart:_js_helper#_rest","internalComputeHashCode","dart:_js_helper#_newLinkedCell","internalFindBucketIndex","hashMapCellValue","dart:_js_helper#_first","dart:_js_helper#_last","dart:_js_helper#_next","dart:_js_helper#_length","dart:_js_helper#_modifications","hashMapCellKey","modifiedObject","dart:_rti#_is","dart:_rti#_kind","dart:_rti#_primary","dart:_rti#_requiredPositional","dart:_rti#_optionalPositional","dart:_rti#_named","dart:_rti#_eval","dart:_rti#_bind","width","height","dart:html#_height","dart:html#_width","hashCode","dart:_rti#_rti","message","dart:_rti#_canonicalRecipe","dart:_rti#_bindCache","dart:_rti#_evalCache","dart:_rti#_cachedRuntimeType","dart:_rti#_specializedTestResource","iterator","moveNext","current","internalGet","dart:_interceptors#_iterable","dart:_interceptors#_length","dart:_interceptors#_index","dart:_interceptors#_current=","length","dart:html#_current","dart:html#_position","dart:html#_length","dart:html#_array","name","dart:core#_errorName","dart:core#_hasValue","dart:core#_errorExplanation","invalidValue","dart:_internal#_iterable","dart:_internal#_length","dart:_internal#_index","dart:_internal#_current=","elementAt","start","end","dart:_js_helper#_map","count","dart:html#_target","dart:html#_eventType","dart:async#_resultOrListeners","dart:async#_zone","dart:async#_state","dart:async#_removeListeners","source","dart:async#_nextListener","listenerHasError","listenerValueOrError","state","dart:async#_reverseListeners","dart:async#_cloneResult","dart:async#_prependListeners","listeners","bindCallbackGuarded","next","storedCallback","runGuarded","dart:_js_helper#_trace","dart:_js_helper#_exception","dartException","dart:_js_helper#_irritant","dart:_interceptors#_shrOtherPositive","matchTypeError","dart:_js_helper#_message","dart:_js_helper#_method","dart:_js_helper#_receiver","dart:_js_helper#_pattern","dart:_js_helper#_arguments","dart:_js_helper#_argumentsExpr","dart:_js_helper#_expr","dart:_interceptors#_shrBothPositive","matchesErrorTest","errorCallback","handleError","runBinary","runUnary","run","then","dart:async#_addListener","registerBinaryCallback","dart:_js_helper#_cell","dart:_js_helper#_current=","variableName","dart:html#_onData","dart:_js_helper#_interceptor","isSync","dart:async#_future","completeError","complete","dart:async#_thenAwait","dart:_rti#_message","dart:async#_completeError","dart:async#_asyncCompleteError","dart:async#_setErrorObject","dart:async#_asyncComplete","dart:async#_chainFuture","dart:async#_completeWithValue","dart:async#_chainForeignFuture","dart:async#_asyncCompleteWithValue","addEventListener","dart:html#_addEventListener","bindUnaryCallbackGuarded","runUnaryGuarded","postMessage","mustCopy","walk","convert","lastError","enabled","dart:_interceptors#_removeWhere","sharedKey","setKey","cryptoKeyRing","currentKeyIndex","ratchetKey","codec","dart:core#_enumToString","dart:core#_name","pipeThrough","pipeTo","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.cryptor.dart#_#FrameCryptor#kind#A","worker","enqueue","sublist","synchronizationSource","data","keyOptions","uncryptedMagicBytes","toBytes","getUnencryptedBytes","getMetadata","getKeySet","ratchetSalt","ratchetWindowSize","encryptionKey","setKeySetFromMaterial","timestamp","material","ratchetMaterial","deriveKeys","dart:_internal#_buffer","ratchet","isUndefined","type","dart:_native_typed_data#_setRangeFast","skip","toList","dart:_internal#_startIndex","dart:_internal#_endIndex","dart:_internal#_endOrLength","dart:_internal#_start","dart:_native_typed_data#_checkPosition","dart:_native_typed_data#_invalidPosition","setInt8","sendCounts","nextInt","dart:_native_typed_data#_setUint32","dart:math#_buffer","dart:_native_typed_data#_getUint32","dart:collection#_computeKeys","dart:collection#_keys","dart:collection#_length","dart:collection#_strings","dart:collection#_nums","dart:collection#_rest","dart:collection#_get","dart:collection#_getBucket","dart:collection#_findBucketIndex","dart:collection#_map","dart:collection#_offset","dart:collection#_current=","containsKey","addAll","dart:_internal#_f","dart:_internal#_source","dart:_internal#_iterator","dart:_interceptors#_addAllFromArray","dart:collection#_containsKey","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.cryptor.dart#_ratchetCompleter","copies","values","dart:core#_value","findSlot","copy","copyList","forEachObjectKey","encode","dart:convert#_alphabet","dart:convert#_state","dart:_interceptors#_tdivFast","dart:_interceptors#_codeUnitAt","toRadixString","codeUnitAt","dart:_interceptors#_tdivSlow","dart:_internal#_string","decode","offset","substring","forEachJsField","isUtc","noSuchMethod","argumentCount","names","dart:_internal#_name","dart:_js_helper#_typeArgumentCount","dart:_js_helper#_namedArgumentNames","dart:_js_helper#_kind","dart:_js_helper#_memberName","memberName","positionalArguments","namedArguments","comma","dart:core#_arguments","dart:core#_namedArguments","dart:core#_receiver","dart:core#_memberName","dart:core#_existingArgumentNames","dart:_js_helper#_keys","dart:_js_helper#_jsObject","kind","msgType","code","==","runtimeType","checkMutable","checkGrowable","removeLast","removeWhere","where","join","last","contains","isEmpty","isNotEmpty","dart:_interceptors#_toListGrowable","dart:_interceptors#_toListFixed","[]","[]=","remainder","abs","%","dart:_interceptors#_isInt32","dart:_interceptors#_shlPositive","dart:_interceptors#_shrReceiverPositive","matchAsPrefix","+","toLowerCase","*","padLeft","codeUnits","indexOf","dart:_internal#_grow","id","dart:_js_helper#_keysArray","dart:_js_helper#_fetch","isGetter","isAccessor","dart:_js_helper#_internalName","dart:_js_helper#_captured_namedArgumentList_1","dart:_js_helper#_captured_arguments_2","call","dart:_js_helper#_name","dart:_js_helper#_target","internalContainsKey","dart:_js_helper#_modified","dart:_js_helper#_getBucket","dart:_js_helper#_getTableCell","dart:_js_helper#_getTableBucket","dart:_js_helper#_setTableEntry","dart:_js_helper#_deleteTableEntry","dart:_js_helper#_containsTableEntry","dart:_js_helper#_previous","dart:_js_helper#_captured_getTag_0","dart:_js_helper#_captured_getUnknownTag_0","dart:_js_helper#_captured_prototypeForTag_0","lengthInBytes","asUint8List","buffer","offsetInBytes","getUint32","setUint32","dart:_rti#_precomputed2","dart:_rti#_precomputed3","dart:_rti#_precomputed4","dart:async#_box_0","dart:async#_captured_div_1","dart:async#_captured_span_2","dart:async#_captured_callback_0","dart:async#_once","dart:async#_handle","dart:async#_tick","dart:async#_captured_this_0","dart:async#_captured_callback_1","dart:async#_captured_bodyFunction_0","dart:async#_captured_protected_0","handlesValue","handlesError","hasErrorTest","handlesComplete","dart:async#_onValue","dart:async#_onError","dart:async#_errorTest","dart:async#_whenCompleteAction","hasErrorCallback","handleValue","handleWhenComplete","shouldChain","dart:async#_mayComplete","dart:async#_isPendingComplete","dart:async#_mayAddListener","dart:async#_isChained","dart:async#_isComplete","dart:async#_hasError","dart:async#_ignoreError","dart:async#_setChained","dart:async#_setPendingComplete","dart:async#_clearPendingComplete","dart:async#_error","dart:async#_chainSource","dart:async#_setValue","dart:async#_setError","dart:async#_complete","dart:async#_captured_listener_1","dart:async#_captured_this_1","dart:async#_captured_e_1","dart:async#_captured_s_2","dart:async#_captured_value_1","dart:async#_captured_error_1","dart:async#_captured_stackTrace_2","dart:async#_captured_hasError_2","dart:async#_captured_originalSource_0","dart:async#_captured_sourceResult_1","dart:async#_captured_future_1","dart:async#_subscription","dart:async#_stateData","dart:async#_hasValue","inSameErrorZone","dart:async#_captured_error_0","dart:async#_captured_stackTrace_1","dart:async#_scheduleMicrotask","errorZone","bindCallback","handleUncaughtError","registerCallback","registerUnaryCallback","dart:async#_captured_f_1","dart:async#_captured_T_2","dart:collection#_set","dart:collection#_addHashTableEntry","dart:collection#_computeHashCode","dart:collection#_filter","getRange","dart:collection#_box_0","dart:collection#_captured_result_1","encoder","decoder","dart:convert#_encoder","dart:convert#_urlSafe","createBuffer","close","dart:core#_box_0","dart:core#_captured_sb_1","millisecondsSinceEpoch","year","month","day","hour","minute","second","millisecond","microsecond","indexable","dart:core#_stackTrace","write","writeAll","dart:core#_writeString","algorithm","dart:html#_postMessage_1","dart:html#_postMessage_2","onMessage","dart:html#_left","left","dart:html#_top","top","localName","dart:html#_localName","dart:html#_get_data","dart:html#_start","dart:html#_getItem","dart:html#_captured_keys_0","nodeValue","dart:html#_key","dart:html#_setItem","forTarget","listen","isPaused","dart:html#_tryResume","dart:html#_pauseCount","dart:html#_captured_onData_0","readSlot","writeSlot","cleanupSlots","dart:html_common#_box_0","dart:html_common#_captured_this_1","dart:html_common#_captured_this_0","dart:html_common#_captured_map_1","newJsObject","putIntoObject","newJsMap","putIntoMap","newJsList","cloneNotRequired","newDartList","identicalInJs","dart:js_util#_captured__convertedObjects_0","dart:js_util#_captured_completer_0","dart:js_util#_captured_T_1","dart:math#_getRandomBytes","getItem","dart:web_audio#_getItem","dart:web_audio#_captured_keys_0","index","setParticipantId","setKeyIndex","setEnabled","updateCodec","makeIv","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.cryptor.dart#_captured_this_0","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.cryptor.dart#_captured_keyIndex_1","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart#_captured_trackId_0","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart#_captured_participantId_0","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart#_captured_c_0","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart#_captured_keySet_1","file:///Users/weiweiduan/Desktop/projects/livekit/client-sdk-flutter/web/e2ee.worker.dart#_captured_participantId_2","$indexSet","$add","$eq","$index","$gt","$ge","$mod","$sub","$lt","$mul","$negate","$div","$tdiv","$shl","$shr","$and","$or","$xor","$le","instanceTypeName","constructorNameFallback","isRequired","interceptorFieldName","receiverFieldName","_rtiEval","setDispatchProperty","propertyGet","_setPrecomputed1","_lookupFutureRti","asString","asBool","allocate","_setRequiredPositional","_setOptionalPositional","_setNamed","asRti","instanceOf","_setCachedRuntimeType","_getKind","_setSpecializedTestResource","_setIsTestFunction","_setAsCheckFunction","isSubtype","_getSpecializedTestResource","_getReturnType","_getPrimary","_getGenericFunctionParameterIndex","unmangleGlobalNameIfPreservedAnyways","_lookupErasedRti","_parseRecipe","_getEvalCache","_setEvalCache","_getBindCache","_setBindCache","_createTerminalRti","_setKind","_setCanonicalRecipe","_canonicalRecipeOfStar","_recipeJoin","_setPrimary","_canonicalRecipeOfQuestion","_canonicalRecipeOfFutureOr","_createGenericFunctionParameterRti","_canonicalRecipeOfInterface","_createInterfaceRti","_setRest","arrayConcat","_canonicalRecipeOfBinding","_recipeJoin5","_createBindingRti","_canonicalRecipeOfRecord","_createRecordRti","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_createFunctionRti","_canonicalRecipeOfGenericFunction","_recipeJoin4","charCodeAt","toGenericFunctionParameter","_lookupDynamicRti","_lookupVoidRti","pushStackFrame","push","setPosition","handleTypeArguments","arraySplice","handleOptionalGroup","handleNamedGroup","collectNamed","handleStartRecord","isDigit","evalTypeVariable","_lookupNeverRti","_lookupAnyRti","stringLessThan","lookupSupertype","_getInterfaceTypeArguments","_getRest","_createTimer","_future","_setValue","_isChained","_chainSource","_setChained","_hasError","_error","_zone","_isComplete","_removeListeners","_cloneResult","_setErrorObject","_scheduleImmediate","writeFinalChunk","_stateBits","_statePadding","objectToHumanReadableString","_stringFromUint8List","_writeOne","hash4","printToConsole","_tryResume","fieldADI","apply","listToString","_handleIEtoString","_codeUnitAt","_grow","_pow2roundup","empty","_fetch","markUnmodifiableList","unvalidated","_containsTableEntry","_getBucket","_modified","_rtiBind","_mayComplete","_completeError","_errorTest","unsafeCast","thenAwait","_mayAddListener","_setError","_whenCompleteAction","_onValue","_onError","_complete","throwWithStackTrace","_hasTableEntry","_set","_computeHashCode","_HashMap._set","identityHashCode","tooFew","_writeString","getName","extractStackTrace","withInvocation","convertDartToNative_SerializedScriptValue","_getItem","fromMillisecondsSinceEpoch","_getRandomBytes","secure","PropsRTCTransformEvent|get#transformer","getProperty","PropsRTCRtpScriptTransformer|get#options","PropsRTCRtpScriptTransformer|get#readable","PropsRTCRtpScriptTransformer|get#writable","convertNativeToDart_SerializedScriptValue","MessageEvent.data","FrameCryptor.setEnabled","FrameCryptor.setKeyIndex","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","_buffer"], + "mappings": "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", + "x_org_dartlang_dart2js": { + "minified_names": { + "global": "print,286,main_closure,854,allowInterop,309,main_closure0,854,_EventStreamSubscription$,855,main,302,_asyncStartSync,222,_asyncAwait,223,_asyncReturn,224,_asyncRethrow,225,_wrapJsFunctionForAsync,227,_makeAsyncAwaitCompleter,220,_asBool,125,LateError,856,throwExpression,33,_asStringQ,142,wrapException,31,NullThrownError,857,toStringWrapper,32,getIsolateAffinityTag,62,unminifyOrTag,6,S,8,MapBase_mapToString,858,_isToStringVisiting,251,StringBuffer,859,_toStringVisiting,860,MapBase_mapToString_closure,861,ioore,27,convertNativeToDart_Dictionary,290,LinkedHashMap_LinkedHashMap$_empty,862,throwConcurrentModificationError,34,_convertNativeToDart_Value,289,_instanceType,99,LinkedHashMapCell,863,_asInt,132,_isBool,124,isJavaScriptSimpleObject,291,ConcurrentModificationError$,855,Error_safeToString,864,Error__objectToString,865,Closure,866,Primitives_objectTypeName,867,Primitives__objectTypeNameNewRti,868,Object,869,instanceType,96,_rtiToString,148,_asString,140,_unminifyOrTag,150,_rtiArrayToString,143,_recordRtiToString,144,_functionRtiToString,145,_setArrayType,92,ConcurrentModificationError,282,JsLinkedHashMap,870,Object_hash,871,SystemHash_combine,872,SystemHash_finish,873,objectHashCode,43,_Universe_eval,874,createRuntimeType,103,_Parser_create,875,_Parser_parse,876,_Parser_handleDigit,877,_Parser_handleIdentifier,878,_Parser_toType,879,_Universe__lookupGenericFunctionParameterRti,880,_Universe__lookupTerminalRti,881,_Parser_toTypes,882,_Universe__lookupInterfaceRti,883,_Universe__lookupGenericFunctionRti,884,_Universe__lookupBindingRti,885,_Parser_handleExtendedOperations,886,_Universe__lookupStarRti,887,_Universe__lookupQuestionRti,888,_Universe__lookupFutureOrRti,889,_Parser_handleArguments,890,_Parser_toTypesNamed,891,_Parser_collectArray,892,_FunctionParameters,893,_Universe__lookupFunctionRti,894,_Universe__lookupRecordRti,895,AssertionError$,855,AssertionError,271,_Universe__canonicalRecipeJoin,896,Rti,897,_Universe__installTypeTests,898,_installSpecializedAsCheck,108,_installSpecializedIsTest,106,_Universe__canonicalRecipeJoinNamed,899,_Universe__createFutureOrRti,900,Future,901,isStrongTopType,212,_Universe__createQuestionRti,902,isNullable,211,Rti__getQuestionFromStar,903,_Universe__createStarRti,904,_Universe__createGenericFunctionRti,905,_Utils_newArrayOrEmpty,906,_substitute,87,_substituteArray,88,_substituteFunctionParameters,90,_substituteNamed,89,_Parser_indexToType,907,_Universe_findRule,908,Rti__getCanonicalRecipe,909,_Universe_evalInEnvironment,910,_Type,104,Primitives_objectHashCode,43,Primitives__identityHashCodeProperty,911,MapMixin,912,ArrayIterator,913,_arrayInstanceType,98,JSArray,914,LinkedHashMapKeyIterable,915,IterableBase_iterableToShortString,916,_iterablePartsToStrings,252,StringBuffer__writeAll,917,FixedSizeListIterator,918,ImmutableListMixin,919,IndexError$withLength,920,IndexError,921,List,922,ListIterator,923,ListMixin,924,RangeError_checkNotNegative,925,RangeError$range,926,_asNumQ,138,RangeError,927,_checkValidIndex,80,diagnoseIndexError,28,_isInt,131,ArgumentError,272,RangeError$value,928,_Future,929,Zone__current,930,Stream_length_closure,519,Stream_length_closure0,519,_Future__propagateToListeners,931,_rootHandleError,239,_Future__propagateToListeners_handleWhenCompleteCallback,932,_Future__propagateToListeners_handleValueCallback,933,_Future__propagateToListeners_handleError,934,_Future__chainCoreFuture,935,_Future__prependListeners_closure,936,_rootScheduleMicrotask,243,_scheduleAsyncCallback,235,_AsyncCallbackEntry,937,_lastCallback,938,_nextCallback,939,_isInCallbackLoop,940,_microtaskLoop,233,_lastPriorityCallback,941,_AsyncRun__initializeScheduleImmediate,942,_AsyncRun__initializeScheduleImmediate_internalCallback,943,convertDartClosureToJS,46,_AsyncRun__initializeScheduleImmediate_closure,944,_TimerImpl$,855,_asIntQ,134,_TimerImpl,219,_TimerImpl_internalCallback,945,UnsupportedError$,855,UnsupportedError,279,_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback,946,_AsyncRun__scheduleImmediateJsOverride_internalCallback,947,invokeClosure,45,Exception_Exception,855,_Exception,948,_RootZone_bindCallbackGuarded_closure,949,_rootRun,240,unwrapException,39,getTraceFromException,42,ExceptionAndStackTrace,950,_StackTrace,951,NullThrownFromJavaScriptException,952,saveStackTrace,40,_unwrapNonDartException,41,JsNoSuchMethodError$,855,NullError,953,UnknownJsTypeError,954,StackOverflowError,955,TypeErrorDecoder_extractPattern,956,quoteStringForRegExp,74,TypeErrorDecoder,957,TypeErrorDecoder_provokePropertyErrorOn,958,TypeErrorDecoder_provokeCallErrorOn,959,JsNoSuchMethodError,38,AsyncError$,855,checkNotNullable,3,AsyncError,228,AsyncError_defaultStackTrace,960,ArgumentError$,855,_rootRunUnary,241,_rootRunBinary,242,_Future__propagateToListeners_handleWhenCompleteCallback_closure,961,ArgumentError$value,928,_registerErrorHandler,232,_FutureListener,962,_Future__addListener_closure,963,_rootHandleError_closure,964,_schedulePriorityAsyncCallback,236,Error__throw,965,Iterable,966,LinkedHashMapKeyIterator,438,AudioParamMap_keys_closure,967,Storage_keys_closure,968,RtcStatsReport_keys_closure,969,MidiOutputMap_keys_closure,970,MidiInputMap_keys_closure,971,IterableBase_iterableToFullString,972,initNativeDispatchFlag,973,initNativeDispatch,69,UnimplementedError$,855,_JS_INTEROP_INTERCEPTOR_TAG,974,lookupAndCacheInterceptor,64,getTagFunction,975,dispatchRecordsForInstanceTags,976,interceptorsForUncacheableTags,977,alternateTagFunction,978,makeLeafDispatchRecord,67,patchInteriorProto,66,makeDispatchRecord,312,JavaScriptIndexingBehavior,979,UnimplementedError,280,initNativeDispatchContinue,70,initHooks,72,prototypeForTagFunction,980,makeDefaultDispatchRecord,68,applyHooksTransformer,73,initHooks_closure,981,initHooks_closure0,981,initHooks_closure1,981,CyclicInitializationError,982,Closure_fromTearOff,983,StaticClosure,984,BoundClosure,985,Closure_forwardCallTo,986,Closure__computeSignatureFunctionNewRti,987,BoundClosure_evalRecipe,988,Closure_forwardInterceptedCallTo,989,Closure_cspForwardCall,990,BoundClosure_receiverOf,991,BoundClosure__interceptorFieldNameCache,992,BoundClosure__computeFieldNamed,993,BoundClosure__receiverFieldNameCache,994,Closure_cspForwardInterceptedCall,995,BoundClosure_interceptorOf,996,RuntimeError,997,JSArray_markFixedList,998,_wrapJsFunctionForAsync_closure,999,_StreamIterator,1000,StreamSubscription,1001,_awaitOnObject,226,_awaitOnObject_closure,1002,_awaitOnObject_closure0,1002,_TypeError__TypeError$forType,1003,_TypeError,1004,_Error_compose,1005,_failedAsCheck,116,instanceOrFunctionType,94,_TypeError$fromMessage,1006,Rti__isUnionOfFunctionType,1007,closureFunctionType,93,getTypeFromTypesTable,102,_generalAsCheckImplementation,114,_asTop,123,_asObject,121,_generalNullableAsCheckImplementation,115,_nullIs,109,_isSubtype,205,Rti__getFutureFromFutureOr,1008,_isFunctionSubtype,206,_isInterfaceSubtype,207,_isRecordSubtype,210,_areArgumentsSubtypes,209,_isObject,120,_finishIsFn,107,_isTop,122,_isNum,135,_isString,139,isTopType,146,_isListTestViaProperty,113,_isTestViaProperty,112,_generalNullableIsTestImplementation,111,_generalIsTestImplementation,110,_Universe_bind,1009,_instanceTypeFromConstructor,100,_instanceTypeFromConstructorMiss,101,_Universe_findErasedType,1010,_AsyncAwaitCompleter,1011,_Future__asyncCompleteError_closure,1012,_Future__chainFuture_closure,1013,_Future__chainForeignFuture_closure,1014,_Future__chainForeignFuture_closure0,1014,_Future__chainForeignFuture_closure1,1014,scheduleMicrotask,237,_Future__asyncCompleteWithValue_closure,1015,_EventStreamSubscription_closure,1016,_wrapZone,288,_EventStreamSubscription,287,_RootZone_bindUnaryCallbackGuarded_closure,533,_AcceptStructuredCloneDart2Js,1017,_ensureNativeList,75,keyProviderOptions,850,KeyOptions,299,participantCryptors,1018,WhereIterable,1019,bool,1020,main__closure,1021,List_List$of,1022,printString,304,LinkedHashMap_LinkedHashMap$_literal,1023,main__closure0,1021,IterableExtension_firstWhereOrNull,1024,FrameCryptor$,855,main__closure1,1021,main__closure2,1021,main__closure3,1021,main__closure4,1021,main__closure5,1021,main__closure6,1021,main__closure7,1021,jsify,292,NativeUint8List_NativeUint8List$view,1025,_CopyingBytesBuilder,1026,jsArrayBufferFrom,297,throwLateFieldNI,305,iae,26,boolConversionCheck,59,_checkValidRange,81,promiseToFuture,294,getAlgoOptions,311,KeySet,1027,_AsyncCompleter,1028,promiseToFuture_closure,1029,promiseToFuture_closure0,1029,StateError$,855,StateError,281,NullRejectionException,1030,diagnoseRangeError,29,assertThrow,60,_AssertionError,1031,argumentErrorValue,30,findNALUIndices,300,LateError$fieldNI,1032,RangeError_checkValidRange,1033,_asDouble,128,SubListIterable$,855,ListIterable,1034,SubListIterable,4,JSArray_JSArray$fixed,1035,List_List$filled,1036,JSArray_JSArray$markFixed,1037,NativeUint8List_NativeUint8List,855,_JSSecureRandom,772,NativeByteData_NativeByteData,855,_convertDataTree,293,_convertDataTree__convert,1038,_IdentityHashMap,1039,_HashMap__getTableEntry,1040,_HashMapKeyIterable,1041,_HashMapKeyIterator,1042,MappedListIterable,1043,MappedIterable,5,MappedIterator,1044,Iterator,1045,MappedIterable_MappedIterable,855,EfficientLengthMappedIterable,1046,_HashMap__newHashTable,1047,_HashMap__setTableEntry,1048,FrameCryptor_ratchetKey_closure,1049,FrameCryptor_ratchetKey__closure,1050,FrameCryptor_ratchetKey___closure,1051,WhereIterator,1052,_StructuredCloneDart2Js,1053,DateTime,1054,_StructuredClone_walk_closure,1055,_StructuredClone_walk_closure0,1055,Codec,1056,_Base64Encoder,1057,String_String$fromCharCodes,1058,Primitives_stringFromNativeUint8List,1059,_Base64Encoder_encodeChunk,1060,impportKeyFromRawData,298,FrameCryptor,301,LinkedHashMap,1061,fillLiteralMap,44,List_List$_of,1062,CodeUnits,1063,NativeUint8List_NativeUint8List$fromList,1064,KeyOptions$,855,UnmodifiableListMixin,1065,_Base64Decoder,1066,FormatException$,855,FormatException,284,_Base64Decoder__checkPadding,1067,_Base64Decoder__allocateBuffer,1068,_Base64Decoder_decodeChunk,1069,_Base64Decoder__trimPaddingChars,1070,_AcceptStructuredClone_walk_closure,1071,Primitives_getYear,1072,DateTime__fourDigits,1073,Primitives_getMonth,1074,DateTime__twoDigits,1075,Primitives_getDay,1076,Primitives_getHours,1077,Primitives_getMinutes,1078,Primitives_getSeconds,1079,Primitives_getMilliseconds,1080,DateTime__threeDigits,1081,Primitives_lazyAsJsDate,1082,_convertDartFunctionFast,307,_callDartFunctionFast,308,Primitives_applyFunction,1083,Primitives__generalApplyFunction,1084,Primitives_functionNoSuchMethod,1085,Primitives_functionNoSuchMethod_closure,1086,JSInvocationMirror,1087,Symbol,1088,NoSuchMethodError$_,1089,NoSuchMethodError_toString_closure,1090,NoSuchMethodError,1091,ConstantMapView,1092,_ConstantMapKeyIterable,1093,ConstantStringMap,1094,Map,1095,main__closure8,1021,_Utils_objectAssign,1096,JS_CONST,1097,Interceptor,1098,JSBool,1099,Null,1100,JSNull,1101,JavaScriptObject,1102,JSObject,1103,LegacyJavaScriptObject,1104,PlainJavaScriptObject,1105,UnknownJavaScriptObject,1106,Function,1107,JavaScriptFunction,1108,EfficientLengthIterable,1109,JSIndexable,1110,JSUnmodifiableArray,1111,double,1112,num,1113,JSNumber,1114,int,1115,JSInt,1116,JSNumNotInt,1117,String,1118,JSString,1119,SentinelValue,1120,FixedLengthListMixin,1121,UnmodifiableListBase,1122,Symbol0,1088,ConstantMap,1123,Invocation,1124,StackTrace,1125,Closure0Args,1126,Closure2Args,1127,TearOffClosure,1128,_Required,1129,NativeByteBuffer,1130,ByteBuffer,1131,NativeTypedData,1132,ByteData,1133,NativeByteData,76,NativeTypedArray,1134,NativeTypedArrayOfDouble,1135,NativeTypedArrayOfInt,1136,NativeFloat32List,1137,NativeFloat64List,1138,NativeInt16List,1139,NativeInt32List,1140,NativeInt8List,1141,NativeUint16List,1142,NativeUint32List,1143,NativeUint8ClampedList,1144,Uint8List,1145,NativeUint8List,77,_Error,1146,TypeError,1147,Completer,296,Error,1148,_Completer,1149,Stream,1150,StreamTransformerBase,1151,Zone,1152,_Zone,1153,_RootZone,1154,_HashMap,1155,ListBase,1156,MapBase,1157,_UnmodifiableMapMixin,1158,MapView,1159,UnmodifiableMapView,1160,Base64Codec,1161,Base64Encoder,1162,Base64Decoder,1163,Converter,1164,_Enum,1165,OutOfMemoryError,1166,_StringStackTrace,1167,HtmlElement,1168,AbortPaymentEvent,1169,AbsoluteOrientationSensor,1170,Accelerometer,1171,AccessibleNode,1172,AccessibleNodeList,1173,AmbientLightSensor,1174,AnchorElement,1175,Animation,1176,AnimationEffectReadOnly,1177,AnimationEffectTiming,1178,AnimationEffectTimingReadOnly,1179,AnimationEvent,1180,AnimationPlaybackEvent,1181,AnimationTimeline,1182,AnimationWorkletGlobalScope,1183,ApplicationCache,1184,ApplicationCacheErrorEvent,1185,AreaElement,1186,AudioElement,1187,AuthenticatorAssertionResponse,1188,AuthenticatorAttestationResponse,1189,AuthenticatorResponse,1190,BRElement,1191,BackgroundFetchClickEvent,1192,BackgroundFetchEvent,1193,BackgroundFetchFailEvent,1194,BackgroundFetchFetch,1195,BackgroundFetchManager,1196,BackgroundFetchRegistration,1197,BackgroundFetchSettledFetch,1198,BackgroundFetchedEvent,1199,BarProp,1200,BarcodeDetector,1201,BaseElement,1202,BatteryManager,1203,BeforeInstallPromptEvent,1204,BeforeUnloadEvent,1205,Blob,1206,BlobEvent,1207,BluetoothRemoteGattDescriptor,1208,Body,1209,BodyElement,1210,BroadcastChannel,1211,BudgetState,1212,ButtonElement,1213,CDataSection,1214,CacheStorage,1215,CanMakePaymentEvent,1216,CanvasCaptureMediaStreamTrack,1217,CanvasElement,1218,CanvasGradient,1219,CanvasPattern,1220,CanvasRenderingContext2D,1221,CharacterData,1222,Client,1223,Clients,1224,ClipboardEvent,1225,CloseEvent,1226,Comment,1227,CompositionEvent,1228,ContentElement,1229,CookieStore,1230,Coordinates,1231,Credential,1232,CredentialUserData,1233,CredentialsContainer,1234,Crypto,1235,CryptoKey,1236,Css,1237,CssCharsetRule,1238,CssConditionRule,1239,CssFontFaceRule,1240,CssGroupingRule,1241,CssImageValue,1242,CssImportRule,1243,CssKeyframeRule,1244,CssKeyframesRule,1245,CssKeywordValue,1246,CssMatrixComponent,1247,CssMediaRule,1248,CssNamespaceRule,1249,CssNumericValue,1250,CssPageRule,1251,CssPerspective,1252,CssPositionValue,1253,CssResourceValue,1254,CssRotation,1255,CssRule,1256,CssScale,1257,CssSkew,1258,CssStyleDeclaration,1259,CssStyleDeclarationBase,1260,CssStyleRule,1261,CssStyleSheet,1262,CssStyleValue,1263,CssSupportsRule,1264,CssTransformComponent,1265,CssTransformValue,1266,CssTranslation,1267,CssUnitValue,1268,CssUnparsedValue,1269,CssVariableReferenceValue,1270,CssViewportRule,1271,CssurlImageValue,1272,CustomElementRegistry,1273,CustomEvent,1274,DListElement,1275,DataElement,1276,DataListElement,1277,DataTransfer,1278,DataTransferItem,1279,DataTransferItemList,1280,DedicatedWorkerGlobalScope,1281,DeprecatedStorageInfo,1282,DeprecatedStorageQuota,1283,DeprecationReport,1284,DetailsElement,1285,DetectedBarcode,1286,DetectedFace,1287,DetectedText,1288,DeviceAcceleration,1289,DeviceMotionEvent,1290,DeviceOrientationEvent,1291,DeviceRotationRate,1292,DialogElement,1293,DirectoryEntry,1294,DirectoryReader,1295,DivElement,1296,Document,1297,DocumentFragment,1298,DocumentOrShadowRoot,1299,DocumentTimeline,1300,DomError,1301,DomException,1302,DomImplementation,1303,DomIterator,1304,DomMatrix,1305,DomMatrixReadOnly,1306,DomParser,1307,DomPoint,1308,DomPointReadOnly,1309,DomQuad,1310,DomRectList,1311,Rectangle,1312,DomRectReadOnly,1313,DomStringList,1314,DomStringMap,1315,DomTokenList,1316,Element,1317,EmbedElement,1318,Entry,1319,ErrorEvent,1320,Event,1321,EventSource,1322,EventTarget,1323,ExtendableEvent,1324,ExtendableMessageEvent,1325,External,1326,FaceDetector,1327,FederatedCredential,1328,FetchEvent,1329,FieldSetElement,1330,File,1331,FileEntry,1332,FileList,1333,FileReader,1334,FileSystem,1335,FileWriter,1336,FocusEvent,1337,FontFace,1338,FontFaceSet,1339,FontFaceSetLoadEvent,1340,FontFaceSource,1341,ForeignFetchEvent,1342,FormData,1343,FormElement,1344,Gamepad,1345,GamepadButton,1346,GamepadEvent,1347,GamepadPose,1348,Geolocation,1349,Geoposition,1350,Gyroscope,1351,HRElement,1352,HashChangeEvent,1353,HeadElement,1354,Headers,1355,HeadingElement,1356,History,1357,HtmlCollection,1358,HtmlDocument,1359,HtmlFormControlsCollection,1360,HtmlHtmlElement,1361,HtmlHyperlinkElementUtils,1362,HtmlOptionsCollection,1363,HttpRequest,1364,HttpRequestEventTarget,1365,HttpRequestUpload,1366,IFrameElement,1367,IdleDeadline,1368,ImageBitmap,1369,ImageBitmapRenderingContext,1370,ImageCapture,1371,ImageData,1372,ImageElement,1373,InputDeviceCapabilities,1374,InputElement,1375,InstallEvent,1376,IntersectionObserver,1377,IntersectionObserverEntry,1378,InterventionReport,1379,KeyboardEvent,1380,KeyframeEffect,1381,KeyframeEffectReadOnly,1382,LIElement,1383,LabelElement,1384,LegendElement,1385,LinearAccelerationSensor,1386,LinkElement,1387,Location,1388,Magnetometer,1389,MapElement,1390,MathMLElement,1391,MediaCapabilities,1392,MediaCapabilitiesInfo,1393,MediaDeviceInfo,1394,MediaDevices,1395,MediaElement,1396,MediaEncryptedEvent,1397,MediaError,1398,MediaKeyMessageEvent,1399,MediaKeySession,1400,MediaKeyStatusMap,1401,MediaKeySystemAccess,1402,MediaKeys,1403,MediaKeysPolicy,1404,MediaList,1405,MediaMetadata,1406,MediaQueryList,1407,MediaQueryListEvent,1408,MediaRecorder,1409,MediaSession,1410,MediaSettingsRange,1411,MediaSource,1412,MediaStream,1413,MediaStreamEvent,1414,MediaStreamTrack,1415,MediaStreamTrackEvent,1416,MemoryInfo,1417,MenuElement,1418,MessageChannel,1419,MessageEvent,1420,MessagePort,1421,MetaElement,1422,Metadata,1423,MeterElement,1424,MidiAccess,1425,MidiConnectionEvent,1426,MidiInput,1427,MidiInputMap,1428,MidiMessageEvent,1429,MidiOutput,1430,MidiOutputMap,1431,MidiPort,1432,MimeType,1433,MimeTypeArray,1434,ModElement,1435,MouseEvent,1436,MutationEvent,1437,MutationObserver,1438,MutationRecord,1439,NavigationPreloadManager,1440,Navigator,1441,NavigatorAutomationInformation,1442,NavigatorConcurrentHardware,1443,NavigatorCookies,1444,NavigatorUserMediaError,1445,NetworkInformation,1446,Node,1447,NodeFilter,1448,NodeIterator,1449,NodeList,1450,NonDocumentTypeChildNode,1451,NonElementParentNode,1452,NoncedElement,1453,Notification,1454,NotificationEvent,1455,OListElement,1456,ObjectElement,1457,OffscreenCanvas,1458,OffscreenCanvasRenderingContext2D,1459,OptGroupElement,1460,OptionElement,1461,OrientationSensor,1462,OutputElement,1463,OverconstrainedError,1464,PageTransitionEvent,1465,PaintRenderingContext2D,1466,PaintSize,1467,PaintWorkletGlobalScope,1468,ParagraphElement,1469,ParamElement,1470,PasswordCredential,1471,Path2D,1472,PaymentAddress,1473,PaymentInstruments,1474,PaymentManager,1475,PaymentRequest,1476,PaymentRequestEvent,1477,PaymentRequestUpdateEvent,1478,PaymentResponse,1479,Performance,1480,PerformanceEntry,1481,PerformanceLongTaskTiming,1482,PerformanceMark,1483,PerformanceMeasure,1484,PerformanceNavigation,1485,PerformanceNavigationTiming,1486,PerformanceObserver,1487,PerformanceObserverEntryList,1488,PerformancePaintTiming,1489,PerformanceResourceTiming,1490,PerformanceServerTiming,1491,PerformanceTiming,1492,PermissionStatus,1493,Permissions,1494,PhotoCapabilities,1495,PictureElement,1496,Plugin,1497,PluginArray,1498,PointerEvent,1499,PopStateEvent,1500,PositionError,1501,PreElement,1502,Presentation,1503,PresentationAvailability,1504,PresentationConnection,1505,PresentationConnectionAvailableEvent,1506,PresentationConnectionCloseEvent,1507,PresentationConnectionList,1508,PresentationReceiver,1509,PresentationRequest,1510,ProcessingInstruction,1511,ProgressElement,1512,ProgressEvent,1513,PromiseRejectionEvent,1514,PublicKeyCredential,1515,PushEvent,1516,PushManager,1517,PushMessageData,1518,PushSubscription,1519,PushSubscriptionOptions,1520,QuoteElement,1521,Range,1522,RelatedApplication,1523,RelativeOrientationSensor,1524,RemotePlayback,1525,ReportBody,1526,ReportingObserver,1527,ResizeObserver,1528,ResizeObserverEntry,1529,RtcCertificate,1530,RtcDataChannel,1531,RtcDataChannelEvent,1532,RtcDtmfSender,1533,RtcDtmfToneChangeEvent,1534,RtcIceCandidate,1535,RtcLegacyStatsReport,1536,RtcPeerConnection,1537,RtcPeerConnectionIceEvent,1538,RtcRtpContributingSource,1539,RtcRtpReceiver,1540,RtcRtpSender,1541,RtcSessionDescription,1542,RtcStatsReport,1543,RtcStatsResponse,1544,RtcTrackEvent,1545,Screen,1546,ScreenOrientation,1547,ScriptElement,1548,ScrollState,1549,ScrollTimeline,1550,SecurityPolicyViolationEvent,1551,SelectElement,1552,Selection,1553,Sensor,1554,SensorErrorEvent,1555,ServiceWorker,1556,ServiceWorkerContainer,1557,ServiceWorkerGlobalScope,1558,ServiceWorkerRegistration,1559,ShadowElement,1560,ShadowRoot,1561,SharedArrayBuffer,1562,SharedWorker,1563,SharedWorkerGlobalScope,1564,SlotElement,1565,SourceBuffer,1566,SourceBufferList,1567,SourceElement,1568,SpanElement,1569,SpeechGrammar,1570,SpeechGrammarList,1571,SpeechRecognition,1572,SpeechRecognitionAlternative,1573,SpeechRecognitionError,1574,SpeechRecognitionEvent,1575,SpeechRecognitionResult,1576,SpeechSynthesis,1577,SpeechSynthesisEvent,1578,SpeechSynthesisUtterance,1579,SpeechSynthesisVoice,1580,StaticRange,1581,Storage,1582,StorageEvent,1583,StorageManager,1584,StyleElement,1585,StyleMedia,1586,StylePropertyMap,1587,StylePropertyMapReadonly,1588,StyleSheet,1589,SyncEvent,1590,SyncManager,1591,TableCaptionElement,1592,TableCellElement,1593,TableColElement,1594,TableElement,1595,TableRowElement,1596,TableSectionElement,1597,TaskAttributionTiming,1598,TemplateElement,1599,Text,1600,TextAreaElement,1601,TextDetector,1602,TextEvent,1603,TextMetrics,1604,TextTrack,1605,TextTrackCue,1606,TextTrackCueList,1607,TextTrackList,1608,TimeElement,1609,TimeRanges,1610,TitleElement,1611,Touch,1612,TouchEvent,1613,TouchList,1614,TrackDefault,1615,TrackDefaultList,1616,TrackElement,1617,TrackEvent,1618,TransitionEvent,1619,TreeWalker,1620,TrustedHtml,1621,TrustedScriptUrl,1622,TrustedUrl,1623,UIEvent,1624,UListElement,1625,UnderlyingSourceBase,1626,UnknownElement,1627,Url,1628,UrlSearchParams,1629,VR,1630,VRCoordinateSystem,1631,VRDevice,1632,VRDeviceEvent,1633,VRDisplay,1634,VRDisplayCapabilities,1635,VRDisplayEvent,1636,VREyeParameters,1637,VRFrameData,1638,VRFrameOfReference,1639,VRPose,1640,VRSession,1641,VRSessionEvent,1642,VRStageBounds,1643,VRStageBoundsPoint,1644,VRStageParameters,1645,ValidityState,1646,VideoElement,1647,VideoPlaybackQuality,1648,VideoTrack,1649,VideoTrackList,1650,VisualViewport,1651,VttCue,1652,VttRegion,1653,WebSocket,1654,WheelEvent,1655,Window,1656,WindowClient,1657,Worker,1658,WorkerGlobalScope,1659,WorkerPerformance,1660,WorkletAnimation,1661,WorkletGlobalScope,1662,XPathEvaluator,1663,XPathExpression,1664,XPathNSResolver,1665,XPathResult,1666,XmlDocument,1667,XmlSerializer,1668,XsltProcessor,1669,_Attr,1670,_Bluetooth,1671,_BluetoothCharacteristicProperties,1672,_BluetoothDevice,1673,_BluetoothRemoteGATTCharacteristic,1674,_BluetoothRemoteGATTServer,1675,_BluetoothRemoteGATTService,1676,_BluetoothUUID,1677,_BudgetService,1678,_Cache,1679,_Clipboard,1680,_CssRuleList,1681,_DOMFileSystemSync,1682,_DirectoryEntrySync,1683,_DirectoryReaderSync,1684,_DocumentType,1685,_DomRect,1686,_EntrySync,1687,_FileEntrySync,1688,_FileReaderSync,1689,_FileWriterSync,1690,_GamepadList,1691,_HTMLAllCollection,1692,_HTMLDirectoryElement,1693,_HTMLFontElement,1694,_HTMLFrameElement,1695,_HTMLFrameSetElement,1696,_HTMLMarqueeElement,1697,_Mojo,1698,_MojoHandle,1699,_MojoInterfaceInterceptor,1700,_MojoInterfaceRequestEvent,1701,_MojoWatcher,1702,_NFC,1703,_NamedNodeMap,1704,_PagePopupController,1705,_Report,1706,_Request,1707,_ResourceProgressEvent,1708,_Response,1709,_SpeechRecognitionResultList,1710,_StyleSheetList,1711,_SubtleCrypto,1712,_USB,1713,_USBAlternateInterface,1714,_USBConfiguration,1715,_USBConnectionEvent,1716,_USBDevice,1717,_USBEndpoint,1718,_USBInTransferResult,1719,_USBInterface,1720,_USBIsochronousInTransferPacket,1721,_USBIsochronousInTransferResult,1722,_USBIsochronousOutTransferPacket,1723,_USBIsochronousOutTransferResult,1724,_USBOutTransferResult,1725,_WorkerLocation,1726,_WorkerNavigator,1727,_Worklet,1728,EventStreamProvider,1729,_EventStream,1730,_StructuredClone,1731,_AcceptStructuredClone,1732,Cursor,1733,CursorWithValue,1734,Database,1735,IdbFactory,1736,Index,1737,KeyRange,1738,ObjectStore,1739,Observation,1740,Observer,1741,ObserverChanges,1742,OpenDBRequest,1743,Request,1744,Transaction,1745,VersionChangeEvent,1746,AElement,1747,Angle,1748,AnimateElement,1749,AnimateMotionElement,1750,AnimateTransformElement,1751,AnimatedAngle,1752,AnimatedBoolean,1753,AnimatedEnumeration,1754,AnimatedInteger,1755,AnimatedLength,1756,AnimatedLengthList,1757,AnimatedNumber,1758,AnimatedNumberList,1759,AnimatedPreserveAspectRatio,1760,AnimatedRect,1761,AnimatedString,1762,AnimatedTransformList,1763,AnimationElement,1764,CircleElement,1765,ClipPathElement,1766,DefsElement,1767,DescElement,1768,DiscardElement,1769,EllipseElement,1770,FEBlendElement,1771,FEColorMatrixElement,1772,FEComponentTransferElement,1773,FECompositeElement,1774,FEConvolveMatrixElement,1775,FEDiffuseLightingElement,1776,FEDisplacementMapElement,1777,FEDistantLightElement,1778,FEFloodElement,1779,FEFuncAElement,1780,FEFuncBElement,1781,FEFuncGElement,1782,FEFuncRElement,1783,FEGaussianBlurElement,1784,FEImageElement,1785,FEMergeElement,1786,FEMergeNodeElement,1787,FEMorphologyElement,1788,FEOffsetElement,1789,FEPointLightElement,1790,FESpecularLightingElement,1791,FESpotLightElement,1792,FETileElement,1793,FETurbulenceElement,1794,FilterElement,1795,ForeignObjectElement,1796,GElement,1797,GeometryElement,1798,GraphicsElement,1799,ImageElement0,1373,Length,1800,LengthList,1801,LineElement,1802,LinearGradientElement,1803,MarkerElement,1804,MaskElement,1805,Matrix,1806,MetadataElement,1807,Number,1808,NumberList,1809,PathElement,1810,PatternElement,1811,Point,1812,PointList,1813,PolygonElement,1814,PolylineElement,1815,PreserveAspectRatio,1816,RadialGradientElement,1817,Rect,1818,RectElement,1819,ScriptElement0,1548,SetElement,1820,StopElement,1821,StringList,1822,StyleElement0,1585,SvgElement,1823,SvgSvgElement,1824,SwitchElement,1825,SymbolElement,1826,TSpanElement,1827,TextContentElement,1828,TextElement,1829,TextPathElement,1830,TextPositioningElement,1831,TitleElement0,1611,Transform,1832,TransformList,1833,UnitTypes,1834,UseElement,1835,ViewElement,1836,_GradientElement,1837,_SVGComponentTransferFunctionElement,1838,_SVGFEDropShadowElement,1839,_SVGMPathElement,1840,AnalyserNode,1841,AudioBuffer,1842,AudioBufferSourceNode,1843,AudioContext,1844,AudioDestinationNode,1845,AudioListener,1846,AudioNode,1847,AudioParam,1848,AudioParamMap,1849,AudioProcessingEvent,1850,AudioScheduledSourceNode,1851,AudioTrack,1852,AudioTrackList,1853,AudioWorkletGlobalScope,1854,AudioWorkletNode,1855,AudioWorkletProcessor,1856,BaseAudioContext,1857,BiquadFilterNode,1858,ChannelMergerNode,1859,ChannelSplitterNode,1860,ConstantSourceNode,1861,ConvolverNode,1862,DelayNode,1863,DynamicsCompressorNode,1864,GainNode,1865,IirFilterNode,1866,MediaElementAudioSourceNode,1867,MediaStreamAudioDestinationNode,1868,MediaStreamAudioSourceNode,1869,OfflineAudioCompletionEvent,1870,OfflineAudioContext,1871,OscillatorNode,1872,PannerNode,1873,PeriodicWave,1874,ScriptProcessorNode,1875,StereoPannerNode,1876,WaveShaperNode,1877,ActiveInfo,1878,AngleInstancedArrays,1879,Buffer,1880,Canvas,1881,ColorBufferFloat,1882,CompressedTextureAstc,1883,CompressedTextureAtc,1884,CompressedTextureETC1,1885,CompressedTextureEtc,1886,CompressedTexturePvrtc,1887,CompressedTextureS3TC,1888,CompressedTextureS3TCsRgb,1889,ContextEvent,1890,DebugRendererInfo,1891,DebugShaders,1892,DepthTexture,1893,DrawBuffers,1894,EXTsRgb,1895,ExtBlendMinMax,1896,ExtColorBufferFloat,1897,ExtColorBufferHalfFloat,1898,ExtDisjointTimerQuery,1899,ExtDisjointTimerQueryWebGL2,1900,ExtFragDepth,1901,ExtShaderTextureLod,1902,ExtTextureFilterAnisotropic,1903,Framebuffer,1904,GetBufferSubDataAsync,1905,LoseContext,1906,OesElementIndexUint,1907,OesStandardDerivatives,1908,OesTextureFloat,1909,OesTextureFloatLinear,1910,OesTextureHalfFloat,1911,OesTextureHalfFloatLinear,1912,OesVertexArrayObject,1913,Program,1914,Query,1915,Renderbuffer,1916,RenderingContext,1917,RenderingContext2,1918,Sampler,1919,Shader,1920,ShaderPrecisionFormat,1921,Sync,1922,Texture,1923,TimerQueryExt,1924,TransformFeedback,1925,UniformLocation,1926,VertexArrayObject,1927,VertexArrayObjectOes,1928,WebGL,1929,_WebGL2RenderingContextBase,1930,WritableStream,1931,ReadableStream,1932,TransformStream,1933,TransformStreamDefaultController,1934,EncodedStreams,1935,RTCEncodedFrame,1936,RTCEncodedAudioFrame,1937,RTCEncodedVideoFrame,1938,RTCEncodedFrameMetadata,1939,RTCEncodedAudioFrameMetadata,1940,RTCEncodedVideoFrameMetadata,1941,RTCTransformEvent,1942,RTCRtpScriptTransformer,1943,RTCRtpScriptTransform,1944,Promise,1945,Algorithm,1946,AesGcmParams,1947,CryptorError,1948,TransformMessage,1949,EnableTransformMessage,1950,RemoveTransformMessage,1951,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin,1952,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin,1953,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin,1954,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin,1955,_ListBase_Object_ListMixin,1956,_UnmodifiableMapView_MapView__UnmodifiableMapMixin,1957,_CssStyleDeclaration_JavaScriptObject_CssStyleDeclarationBase,1958,_DomRectList_JavaScriptObject_ListMixin,1959,_DomRectList_JavaScriptObject_ListMixin_ImmutableListMixin,1960,_DomStringList_JavaScriptObject_ListMixin,1961,_DomStringList_JavaScriptObject_ListMixin_ImmutableListMixin,1962,_FileList_JavaScriptObject_ListMixin,1963,_FileList_JavaScriptObject_ListMixin_ImmutableListMixin,1964,_HtmlCollection_JavaScriptObject_ListMixin,1965,_HtmlCollection_JavaScriptObject_ListMixin_ImmutableListMixin,1966,_MidiInputMap_JavaScriptObject_MapMixin,1967,_MidiOutputMap_JavaScriptObject_MapMixin,1968,_MimeTypeArray_JavaScriptObject_ListMixin,1969,_MimeTypeArray_JavaScriptObject_ListMixin_ImmutableListMixin,1970,_NodeList_JavaScriptObject_ListMixin,1971,_NodeList_JavaScriptObject_ListMixin_ImmutableListMixin,1972,_PluginArray_JavaScriptObject_ListMixin,1973,_PluginArray_JavaScriptObject_ListMixin_ImmutableListMixin,1974,_RtcStatsReport_JavaScriptObject_MapMixin,1975,_SourceBufferList_EventTarget_ListMixin,1976,_SourceBufferList_EventTarget_ListMixin_ImmutableListMixin,1977,_SpeechGrammarList_JavaScriptObject_ListMixin,1978,_SpeechGrammarList_JavaScriptObject_ListMixin_ImmutableListMixin,1979,_Storage_JavaScriptObject_MapMixin,1980,_TextTrackCueList_JavaScriptObject_ListMixin,1981,_TextTrackCueList_JavaScriptObject_ListMixin_ImmutableListMixin,1982,_TextTrackList_EventTarget_ListMixin,1983,_TextTrackList_EventTarget_ListMixin_ImmutableListMixin,1984,_TouchList_JavaScriptObject_ListMixin,1985,_TouchList_JavaScriptObject_ListMixin_ImmutableListMixin,1986,__CssRuleList_JavaScriptObject_ListMixin,1987,__CssRuleList_JavaScriptObject_ListMixin_ImmutableListMixin,1988,__GamepadList_JavaScriptObject_ListMixin,1989,__GamepadList_JavaScriptObject_ListMixin_ImmutableListMixin,1990,__NamedNodeMap_JavaScriptObject_ListMixin,1991,__NamedNodeMap_JavaScriptObject_ListMixin_ImmutableListMixin,1992,__SpeechRecognitionResultList_JavaScriptObject_ListMixin,1993,__SpeechRecognitionResultList_JavaScriptObject_ListMixin_ImmutableListMixin,1994,__StyleSheetList_JavaScriptObject_ListMixin,1995,__StyleSheetList_JavaScriptObject_ListMixin_ImmutableListMixin,1996,_LengthList_JavaScriptObject_ListMixin,1997,_LengthList_JavaScriptObject_ListMixin_ImmutableListMixin,1998,_NumberList_JavaScriptObject_ListMixin,1999,_NumberList_JavaScriptObject_ListMixin_ImmutableListMixin,2000,_StringList_JavaScriptObject_ListMixin,2001,_StringList_JavaScriptObject_ListMixin_ImmutableListMixin,2002,_TransformList_JavaScriptObject_ListMixin,2003,_TransformList_JavaScriptObject_ListMixin_ImmutableListMixin,2004,_AudioParamMap_JavaScriptObject_MapMixin,2005,getNativeInterceptor,313,isJsIndexable,7,closureFromTearOff,53,throwCyclicInit,61,defineProperty,63,findType,86,typeLiteral,105,_asBoolS,126,_asBoolQ,127,_asDoubleS,129,_asDoubleQ,130,_asIntS,133,_asNum,136,_asNumS,137,_asStringS,141,_Universe_addRules,2006,_Universe_addErasedTypes,2007,_AsyncRun__scheduleImmediateJsOverride,2008,_AsyncRun__scheduleImmediateWithSetImmediate,2009,_AsyncRun__scheduleImmediateWithTimer,2010,_startMicrotaskLoop,234,StreamIterator_StreamIterator,855,throwLateFieldADI,306,DART_CLOSURE_PROPERTY_NAME,833,_CopyingBytesBuilder__emptyList,2011,TypeErrorDecoder_noSuchMethodPattern,2012,TypeErrorDecoder_notClosurePattern,2013,TypeErrorDecoder_nullCallPattern,2014,TypeErrorDecoder_nullLiteralCallPattern,2015,TypeErrorDecoder_undefinedCallPattern,2016,TypeErrorDecoder_undefinedLiteralCallPattern,2017,TypeErrorDecoder_nullPropertyPattern,2018,TypeErrorDecoder_nullLiteralPropertyPattern,2019,TypeErrorDecoder_undefinedPropertyPattern,2020,TypeErrorDecoder_undefinedLiteralPropertyPattern,2021,_AsyncRun__scheduleImmediateClosure,2022,_Base64Decoder__inverseAlphabet,2023,_Base64Decoder__emptyBuffer,2024,_hashSeed,848,Random__secureRandom,2025,Record,2026,$get$DART_CLOSURE_PROPERTY_NAME,833,$get$_hashSeed,848,$get$_AsyncRun__scheduleImmediateClosure,2022,$get$TypeErrorDecoder_noSuchMethodPattern,2012,$get$TypeErrorDecoder_notClosurePattern,2013,$get$TypeErrorDecoder_nullCallPattern,2014,$get$TypeErrorDecoder_nullLiteralCallPattern,2015,$get$TypeErrorDecoder_undefinedCallPattern,2016,$get$TypeErrorDecoder_undefinedLiteralCallPattern,2017,$get$TypeErrorDecoder_nullPropertyPattern,2018,$get$TypeErrorDecoder_nullLiteralPropertyPattern,2019,$get$TypeErrorDecoder_undefinedPropertyPattern,2020,$get$TypeErrorDecoder_undefinedLiteralPropertyPattern,2021,$get$keyProviderOptions,850,$get$_CopyingBytesBuilder__emptyList,2011,$get$Random__secureRandom,2025,$get$_Base64Decoder__inverseAlphabet,2023,$get$_Base64Decoder__emptyBuffer,2024,getInterceptor$,2027,getInterceptor$x,2028,getInterceptor$asx,2029,async___startMicrotaskLoop$closure,2030,async__AsyncRun__scheduleImmediateJsOverride$closure,2031,async__AsyncRun__scheduleImmediateWithSetImmediate$closure,2032,async__AsyncRun__scheduleImmediateWithTimer$closure,2033,getInterceptor$ax,2034", + "instance": "super$LegacyJavaScriptObject$toString,2035,$this,2036,future,2037,get$future,2037,_box_0,2038,_TimerImpl$2,855,callback,2039,div,2040,span,2041,f,2042,_box_1,2043,sourceResult,2044,hasError,2045,listener,2046,originalSource,2047,error,2048,stackTrace,2049,get$stackTrace,2049,keys,2050,get$keys,2050,result,2051,super$Interceptor$toString,2035,prototypeForTag,2052,getUnknownTag,2053,getTag,2054,$protected,2055,bodyFunction,2056,e,2057,s,2058,value,2059,T,2060,onData,2061,setupTransform$body$FrameCryptor,2062,decodeFunction$body$FrameCryptor,2063,completer,2064,super$ListMixin$setRange,2065,encodeFunction$body$FrameCryptor,2066,_JSSecureRandom$0,855,_convertedObjects,2067,keyIndex,2068,trackId,2069,get$trackId,2069,participantId,2070,get$participantId,2070,c,2071,keySet,2072,map,2073,get$map,2073,sb,2074,namedArgumentList,2075,$arguments,2076,SubListIterable$3,855,LinkedHashMapKeyIterator$2,855,_Type$1,855,DateTime$_withValue$2$isUtc,2077,_EventStreamSubscription$4,855,_as,2078,_useCapture,2079,_message,2080,toString$0,2035,forEach$1,2081,add$1,2082,_contents,2083,first,2084,_precomputed1,2085,_rest,2086,_strings,2087,_newHashTable$0,2088,_addHashTableEntry$3,2089,_nums,2090,internalSet$2,2091,__js_helper$_rest,2092,internalComputeHashCode$1,2093,_newLinkedCell$2,2094,internalFindBucketIndex$2,2095,hashMapCellValue,2096,_first,2097,_last,2098,_next,2099,_length,2100,_modifications,2101,hashMapCellKey,2102,modifiedObject,2103,_is,2104,_kind,2105,_primary,2106,_requiredPositional,2107,_optionalPositional,2108,_named,2109,_eval$1,2110,_bind$1,2111,width,2112,get$width,2112,height,2113,get$height,2113,_height,2114,get$_height,2114,_width,2115,get$_width,2115,hashCode,2116,get$hashCode,2116,_rti,2117,message,2118,_canonicalRecipe,2119,_bindCache,2120,_evalCache,2121,_cachedRuntimeType,2122,_specializedTestResource,2123,iterator,2124,get$iterator,2124,moveNext$0,2125,current,2126,get$current,2126,internalGet$1,2127,_iterable,2128,__interceptors$_length,2129,_index,2130,_current,2131,set$_current,2131,length,2132,get$length,2132,set$length,2132,_html$_current,2133,set$_html$_current,2133,_position,2134,_html$_length,2135,get$_html$_length,2135,_array,2136,name,2137,get$name,2137,_errorName,2138,get$_errorName,2138,_hasValue,2139,_errorExplanation,2140,get$_errorExplanation,2140,invalidValue,2141,get$invalidValue,2141,__internal$_iterable,2142,__internal$_length,2143,__internal$_index,2144,__internal$_current,2145,set$__internal$_current,2145,elementAt$1,2146,start,2147,end,2148,_map,2149,count,2150,_target,2151,_eventType,2152,_resultOrListeners,2153,_zone,2154,get$_zone,2154,_state,2155,_removeListeners$0,2156,source,2157,_nextListener,2158,listenerHasError,2159,listenerValueOrError,2160,state,2161,_reverseListeners$1,2162,_cloneResult$1,2163,_prependListeners$1,2164,listeners,2165,bindCallbackGuarded$1,2166,next,2167,storedCallback,2168,runGuarded$1,2169,_trace,2170,_exception,2171,dartException,2172,_irritant,2173,_shrOtherPositive$1,2174,matchTypeError$1,2175,__js_helper$_message,2176,_method,2177,_receiver,2178,_pattern,2179,_arguments,2180,_argumentsExpr,2181,_expr,2182,_shrBothPositive$1,2183,matchesErrorTest$1,2184,errorCallback,2185,handleError$1,2186,runBinary$3$3,2187,runUnary$2$2,2188,run$1$1,2189,then$1$1,2190,_addListener$1,2191,registerBinaryCallback$3$1,2192,_cell,2193,__js_helper$_current,2194,set$__js_helper$_current,2194,variableName,2195,_onData,2196,_interceptor,2197,isSync,2198,_future,2199,completeError$2,2200,complete$1,2201,_thenAwait$1$2,2202,then$1$2$onError,2190,__rti$_message,2203,_completeError$2,2204,_asyncCompleteError$2,2205,_setErrorObject$1,2206,_asyncComplete$1,2207,_chainFuture$1,2208,_completeWithValue$1,2209,_chainForeignFuture$1,2210,_asyncCompleteWithValue$1,2211,addEventListener$3,2212,_addEventListener$3,2213,bindUnaryCallbackGuarded$1$1,2214,runUnaryGuarded$1$2,2215,postMessage$1,2216,mustCopy,2217,walk$1,2218,convert$1,2219,lastError,2220,enabled,2221,setupTransform$5$kind$operation$readable$trackId$writable,2062,_removeWhere$2,2222,sharedKey,2223,setKey$2,2224,cryptoKeyRing,2225,currentKeyIndex,2226,ratchetKey$1,2227,codec,2228,get$codec,2228,_enumToString$0,2229,_name,2230,pipeThrough$1,2231,pipeTo$1,2232,__FrameCryptor_kind_A,2233,encodeFunction,2066,get$encodeFunction,2066,decodeFunction,2063,get$decodeFunction,2063,worker,2234,setupTransform$6$codec$kind$operation$readable$trackId$writable,2062,enqueue$1,2235,sublist$2,2236,sublist$1,2236,synchronizationSource,2237,get$synchronizationSource,2237,data,2238,get$data,2238,set$data,2238,keyOptions,2239,uncryptedMagicBytes,2240,toBytes$0,2241,getUnencryptedBytes$2,2242,getMetadata$0,2243,getKeySet$1,2244,ratchetSalt,2245,ratchetWindowSize,2246,encryptionKey,2247,setKeySetFromMaterial$2,2248,timestamp,2249,get$timestamp,2249,material,2250,ratchetMaterial$1,2251,deriveKeys$2,2252,decodeFunction$2,2063,_buffer,2253,ratchet$2,2254,completeError$1,2200,isUndefined,2255,type,2256,get$type,2256,setRange$3,2065,_setRangeFast$4,2257,skip$1,2258,toList$1$growable,2259,_startIndex,2260,get$_startIndex,2260,_endIndex,2261,get$_endIndex,2261,_endOrLength,2262,_start,2263,_checkPosition$3,2264,_invalidPosition$3,2265,setInt8$2,2266,sendCounts,2267,nextInt$1,2268,_setUint32$3,2269,encodeFunction$2,2066,_math$_buffer,2270,_getUint32$2,2271,_computeKeys$0,2272,_keys,2273,_collection$_length,2274,_collection$_strings,2275,_collection$_nums,2276,_collection$_rest,2277,_get$1,2278,_getBucket$2,2279,_findBucketIndex$2,2280,_collection$_map,2281,_offset,2282,_collection$_current,2283,set$_collection$_current,2283,map$1$1,2073,containsKey$1,2284,addAll$1,2285,_f,2286,_source,2287,_iterator,2288,_addAllFromArray$1,2289,_containsKey$1,2290,_ratchetCompleter,2291,complete$0,2201,copies,2292,values,2293,_value,2294,findSlot$1,2295,copy,2296,copyList$2,2297,forEachObjectKey$2,2298,encode$4,2299,_alphabet,2300,_convert$_state,2301,_tdivFast$1,2302,_codeUnitAt$1,2303,toRadixString$1,2304,codeUnitAt$1,2305,_tdivSlow$1,2306,_string,2307,decode$3,2308,offset,2309,substring$2,2310,forEachJsField$2,2311,isUtc,2312,noSuchMethod$1,2313,argumentCount,2314,names,2315,__internal$_name,2316,_typeArgumentCount,2317,_namedArgumentNames,2318,__js_helper$_kind,2319,_memberName,2320,memberName,2321,get$memberName,2321,positionalArguments,2322,get$positionalArguments,2322,namedArguments,2323,get$namedArguments,2323,comma,2324,_core$_arguments,2325,_namedArguments,2326,_core$_receiver,2327,_core$_memberName,2328,_existingArgumentNames,2329,__js_helper$_keys,2330,_jsObject,2331,kind,2332,get$kind,2332,set$kind,2332,msgType,2333,get$msgType,2333,code,2334,__,2335,get$__,2335,toString,2035,get$toString,2035,noSuchMethod,2313,get$noSuchMethod,2313,runtimeType,2336,get$runtimeType,2336,checkMutable$1,2337,checkGrowable$1,2338,add,2082,get$add,2082,removeLast$0,2339,removeWhere$1,2340,_removeWhere,2222,get$_removeWhere,2222,where$1,2341,addAll,2285,get$addAll,2285,_addAllFromArray,2289,get$_addAllFromArray,2289,join$1,2342,skip,2258,get$skip,2258,elementAt,2146,get$elementAt,2146,last,2343,get$last,2343,contains$1,2344,isEmpty,2345,get$isEmpty,2345,isNotEmpty,2346,get$isNotEmpty,2346,_toListGrowable$0,2347,_toListFixed$0,2348,__0,2349,get$__0,2349,___,2350,get$___,2350,moveNext,2125,get$moveNext,2125,remainder$1,2351,abs$0,2352,toRadixString,2304,get$toRadixString,2304,_,2353,get$_,2353,_isInt32$1,2354,_tdivFast,2302,get$_tdivFast,2302,_tdivSlow,2306,get$_tdivSlow,2306,_shlPositive$1,2355,_shrOtherPositive,2174,get$_shrOtherPositive,2174,_shrReceiverPositive$1,2356,_shrBothPositive,2183,get$_shrBothPositive,2183,codeUnitAt,2305,get$codeUnitAt,2305,_codeUnitAt,2303,get$_codeUnitAt,2303,matchAsPrefix$2,2357,_0,2358,get$_0,2358,substring,2310,get$substring,2310,toLowerCase$0,2359,_1,2360,get$_1,2360,padLeft$2,2361,codeUnits,2362,get$codeUnits,2362,indexOf$1,2363,_grow$1,2364,toBytes,2241,get$toBytes,2241,id,2365,toList,2259,get$toList,2259,_keysArray,2366,get$_keysArray,2366,containsKey,2284,get$containsKey,2284,_fetch$1,2367,forEach,2081,get$forEach,2081,isGetter,2368,get$isGetter,2368,isAccessor,2369,get$isAccessor,2369,_internalName,2370,_captured_namedArgumentList_1,2371,_captured_arguments_2,2372,matchTypeError,2175,get$matchTypeError,2175,$call,2373,get$$call,2373,__js_helper$_name,2374,get$__js_helper$_name,2374,__js_helper$_target,2375,get$__js_helper$_target,2375,internalContainsKey$1,2376,internalGet,2127,get$internalGet,2127,internalSet,2091,get$internalSet,2091,_addHashTableEntry,2089,get$_addHashTableEntry,2089,_modified$0,2377,_newLinkedCell,2094,get$_newLinkedCell,2094,internalComputeHashCode,2093,get$internalComputeHashCode,2093,__js_helper$_getBucket$2,2378,internalFindBucketIndex,2095,get$internalFindBucketIndex,2095,_getTableCell$2,2379,_getTableBucket$2,2380,_setTableEntry$3,2381,_deleteTableEntry$2,2382,_containsTableEntry$2,2383,_newHashTable,2088,get$_newHashTable,2088,_previous,2384,_captured_getTag_0,2385,_captured_getUnknownTag_0,2386,_captured_prototypeForTag_0,2387,lengthInBytes,2388,get$lengthInBytes,2388,asUint8List$2,2389,buffer,2390,get$buffer,2390,offsetInBytes,2391,get$offsetInBytes,2391,_invalidPosition,2265,get$_invalidPosition,2265,_checkPosition,2264,get$_checkPosition,2264,getUint32$1,2392,_getUint32,2271,get$_getUint32,2271,setInt8,2266,get$setInt8,2266,setUint32$2,2393,_setUint32,2269,get$_setUint32,2269,_setRangeFast,2257,get$_setRangeFast,2257,setRange,2065,get$setRange,2065,sublist,2236,get$sublist,2236,_eval,2110,get$_eval,2110,_bind,2111,get$_bind,2111,_precomputed2,2394,_precomputed3,2395,_precomputed4,2396,_async$_box_0,2397,_captured_div_1,2398,_captured_span_2,2399,_captured_callback_0,2400,_once,2401,_handle,2402,_tick,2403,_captured_this_0,2404,_captured_callback_1,2405,complete,2201,get$complete,2201,completeError,2200,get$completeError,2200,_captured_bodyFunction_0,2406,_captured_protected_0,2407,handlesValue,2408,get$handlesValue,2408,handlesError,2409,get$handlesError,2409,hasErrorTest,2410,get$hasErrorTest,2410,handlesComplete,2411,get$handlesComplete,2411,_onValue,2412,get$_onValue,2412,_onError,2413,get$_onError,2413,_errorTest,2414,get$_errorTest,2414,_whenCompleteAction,2415,get$_whenCompleteAction,2415,hasErrorCallback,2416,get$hasErrorCallback,2416,handleValue$1,2417,matchesErrorTest,2184,get$matchesErrorTest,2184,handleError,2186,get$handleError,2186,handleWhenComplete$0,2418,shouldChain$1,2419,_mayComplete,2420,get$_mayComplete,2420,_isPendingComplete,2421,get$_isPendingComplete,2421,_mayAddListener,2422,get$_mayAddListener,2422,_isChained,2423,get$_isChained,2423,_isComplete,2424,get$_isComplete,2424,_hasError,2425,get$_hasError,2425,_ignoreError,2426,get$_ignoreError,2426,_setChained$1,2427,then,2190,get$then,2190,_thenAwait,2202,get$_thenAwait,2202,_setPendingComplete$0,2428,_clearPendingComplete$0,2429,_error,2430,get$_error,2430,_chainSource,2431,get$_chainSource,2431,_setValue$1,2432,_setErrorObject,2206,get$_setErrorObject,2206,_setError$2,2433,_cloneResult,2163,get$_cloneResult,2163,_addListener,2191,get$_addListener,2191,_prependListeners,2164,get$_prependListeners,2164,_removeListeners,2156,get$_removeListeners,2156,_reverseListeners,2162,get$_reverseListeners,2162,_chainForeignFuture,2210,get$_chainForeignFuture,2210,_complete$1,2434,_completeWithValue,2209,get$_completeWithValue,2209,_completeError,2204,get$_completeError,2204,_asyncComplete,2207,get$_asyncComplete,2207,_asyncCompleteWithValue,2211,get$_asyncCompleteWithValue,2211,_chainFuture,2208,get$_chainFuture,2208,_asyncCompleteError,2205,get$_asyncCompleteError,2205,_captured_listener_1,2435,_captured_this_1,2436,_captured_e_1,2437,_captured_s_2,2438,_captured_value_1,2439,_captured_error_1,2440,_captured_stackTrace_2,2441,_captured_hasError_2,2442,_captured_originalSource_0,2443,_captured_sourceResult_1,2444,_captured_future_1,2445,_subscription,2446,_stateData,2447,_async$_hasValue,2448,inSameErrorZone$1,2449,_captured_error_0,2450,_captured_stackTrace_1,2451,_scheduleMicrotask,2452,get$_scheduleMicrotask,2452,errorZone,2453,get$errorZone,2453,runGuarded,2169,get$runGuarded,2169,runUnaryGuarded,2215,get$runUnaryGuarded,2215,bindCallback$1$1,2454,bindCallbackGuarded,2166,get$bindCallbackGuarded,2166,bindUnaryCallbackGuarded,2214,get$bindUnaryCallbackGuarded,2214,handleUncaughtError$2,2455,run,2189,get$run,2189,runUnary,2188,get$runUnary,2188,runBinary,2187,get$runBinary,2187,registerCallback$1$1,2456,registerUnaryCallback$2$1,2457,registerBinaryCallback,2192,get$registerBinaryCallback,2192,errorCallback$2,2185,scheduleMicrotask$1,237,_captured_f_1,2458,_captured_T_2,2459,_containsKey,2290,get$_containsKey,2290,_get,2278,get$_get,2278,_set$2,2460,_computeKeys,2272,get$_computeKeys,2272,_collection$_addHashTableEntry$3,2461,_computeHashCode$1,2462,_getBucket,2279,get$_getBucket,2279,_findBucketIndex,2280,get$_findBucketIndex,2280,_filter$2,2463,getRange$2,2464,setRange$4,2065,_collection$_box_0,2465,_captured_result_1,2466,encoder,2467,get$encoder,2467,decoder,2468,get$decoder,2468,decode$1,2308,_encoder,2469,convert,2219,get$convert,2219,_urlSafe,2470,createBuffer$1,2471,encode,2299,get$encode,2299,decode,2308,get$decode,2308,close$2,2472,encode$1,2299,_core$_box_0,2473,_captured_sb_1,2474,millisecondsSinceEpoch,2475,get$millisecondsSinceEpoch,2475,year,2476,get$year,2476,month,2477,get$month,2477,day,2478,get$day,2478,hour,2479,get$hour,2479,minute,2480,get$minute,2480,second,2481,get$second,2481,millisecond,2482,get$millisecond,2482,microsecond,2483,get$microsecond,2483,indexable,2484,_stackTrace,2485,write$1,2486,writeAll$2,2487,_writeString$1,2488,algorithm,2489,get$algorithm,2489,postMessage,2216,get$postMessage,2216,_postMessage_1$2,2490,_postMessage_2$1,2491,onMessage,2492,get$onMessage,2492,_left,2493,get$_left,2493,left,2494,get$left,2494,_top,2495,get$_top,2495,top,2496,get$top,2496,localName,2497,get$localName,2497,_localName,2498,get$_localName,2498,addEventListener,2212,get$addEventListener,2212,_addEventListener,2213,get$_addEventListener,2213,_get_data,2499,get$_get_data,2499,_html$_start$0,2500,_getItem$1,2501,_captured_keys_0,2502,nodeValue,2503,get$nodeValue,2503,_key$1,2504,_setItem$2,2505,forTarget$1,2506,listen$4$cancelOnError$onDone$onError,2507,isPaused,2508,get$isPaused,2508,_tryResume$0,2509,_pauseCount,2510,_captured_onData_0,2511,findSlot,2295,get$findSlot,2295,readSlot$1,2512,writeSlot$2,2513,cleanupSlots$0,2514,walk,2218,get$walk,2218,copyList,2297,get$copyList,2297,convertDartToNative_PrepareForStructuredClone$1,626,_html_common$_box_0,2515,_html_common$_captured_this_1,2516,convertNativeToDart_AcceptStructuredClone$2$mustCopy,826,_html_common$_captured_this_0,2517,_captured_map_1,2518,newJsObject$0,2519,forEachObjectKey,2298,get$forEachObjectKey,2298,putIntoObject$3,2520,newJsMap$0,2521,putIntoMap$3,2522,newJsList$1,2523,cloneNotRequired$1,2524,newDartList$1,2525,identicalInJs$2,2526,forEachJsField,2311,get$forEachJsField,2311,_captured__convertedObjects_0,2527,_captured_completer_0,2528,_captured_T_1,2529,_getRandomBytes$2,2530,nextInt,2268,get$nextInt,2268,getItem$1,2531,_web_audio$_getItem$1,2532,_web_audio$_captured_keys_0,2533,_enumToString,2229,get$_enumToString,2229,index,2534,ratchetKey,2227,get$ratchetKey,2227,ratchetMaterial,2251,get$ratchetMaterial,2251,getKeySet,2244,get$getKeySet,2244,setParticipantId$1,2535,setKeyIndex$1,2536,setEnabled$1,2537,setKey,2224,get$setKey,2224,setKeySetFromMaterial,2248,get$setKeySetFromMaterial,2248,deriveKeys,2252,get$deriveKeys,2252,ratchet,2254,get$ratchet,2254,updateCodec$1,2538,makeIv$2$synchronizationSource$timestamp,2539,setupTransform,2062,get$setupTransform,2062,getUnencryptedBytes,2242,get$getUnencryptedBytes,2242,_e2ee_cryptor$_captured_this_0,2540,_captured_keyIndex_1,2541,_captured_trackId_0,2542,_captured_participantId_0,2543,_captured_c_0,2544,_captured_keySet_1,2545,_captured_participantId_2,2546,$indexSet,2547,$add,2548,$eq,2549,$index,2550,$gt,2551,$ge,2552,$mod,2553,$sub,2554,$lt,2555,$mul,2556,$negate,2557,$div,2558,$tdiv,2559,$shl,2560,$shr,2561,$and,2562,$or,2563,$xor,2564,$le,2565" + }, + "frames": "kqUEsOEu1BAAAAAwR,A;uPA+HWAsI;eAEF0OwG;s9GC0CSq8CuB;uCAAAA6B;uNAuBQC6B;+YAYVD4C;2kBA4NC3FgB;w1CA+H+BlIwB;yJAYjBnxEAAhoBpBi0B0B,A;mRA4qBqCk9CmC;g1EAmGCCAIn4BzBD0B,A;gYJi5ByBCAIj5BzBD0B,A;utCJy7BZ+N6C;+lBAAAA+C;iNAmBqBpbsB;2hBAqCHprC4C;ghBAgCnBA2C;uDASAA6C;sFAmCczEoC;0oCAoQZA+S;u4BA+MJA2C;szCA2DOA4D;kkEAAAA2V;wFAkCcA+D;0EAOpBAoE;iJAKCA0B;gMAWiBAwH;oLASjBA0B;4NAiCuBA4B;6HAGtBA4B;iqEA2NEA6D;AAEAA8e;25HAyPFA0F;m7DAqF6BkrDmK;AACHCsK;wRA0HtBn9EACp8DTo9EiD,sB;sPD09DcprDoG;giBA+IfAqC;iEAaIAkD;2lEEv2EDtxBAA2BT28EoI,A;kTAZS38EAAYT28EoI,A;2vCArEuBr8EAAzChBs8EwE,A;gzDAiRSp8EsL;u0NDpQRq8EwF;+DASeCgB;iDACfDyE;AADeCoB;2vJA4cAC4B;AACICiC;whCA4BsBCAA7PR3rDkD,A;AA8PrB4rDkE;AAEACkE;AAEACkC;qVAwCFCmC;0LAaZv7EAA9CkCw7EsB,A;qNAqEpCt7EAAxEuCs7EmB,A;AAyElCp7E0B;s/BAqFoBJAA3JWw7EoM,A;2KAgL5Bj8E4F;0NAmBUuzByB;6FAGXtDAAkBXAAAAAAAACMisDsB,A,A,gB;2FAhB+CjsD+C;UAC/CisDkD;AAD+CjsDAAerDAAAAAAAACMisDuD,A,A,A;oEARmBl8EmD;6MAoCrB4D6K;mFASgBu4EgX;iNAsBZCqD;gbAmBJCmB;gKA8BAz4E8H;qSAUA04EmB;qyBAsBGCgC;yWAwBOCiC;uBAKV77EAArYuCs7EiB,A;iVA4Z7BOiC;uBAKV77EAAjauCs7EiB,A;iwCA6evBziDiC;2+LAsPX51BAAw3DPkEkB,wO;kQA/2DmB20EAAtkCCC0C,A;swFAgtCJCAA5rCIDsC,A;qPDjOFEmB;wlBC+lDHCmE;orBAiCLC6G;qIAOMCmB;8CAGVC+B;gFAIIFkH;+IAMMGmB;8CAGVC6D;yWAiDFZ8C;AACAD0C;yLAyF8BcAAIpBvBAA7hDP3rDsC,A,AA8hDHmtDwB,AACAC+B,yF;oHAKSCAA/CXCqE,A;ojBAkEY3BAAvjDP3rDsC,A;AAwjDHmtDqB;AACAI4B;GACAH+B;kKAMSIAAzEXFqE,A;0lCAyGY3BAAhmDP3rDsC,A;AAimDHmtDqB;AACAI4B;GACAH+B;kKAMSKAAhHXHqE,A;0TA2HmBpBgB;AACfv4E4O;6DAGK63E+D;oIAKGGAA7nDP3rDsC,A;AA8nDHmtDqB;AACAI4B;GACAH+B;8QAUAMAAKU/BAA/oDP3rDsC,A,AAgpDHmtDsB,AACAI4B,AACAH+B,yF;keAqBmB3BiC;4PA0BVkC0F;iFAKMCAAKLjCAA3sDP3rDsC,A,AA4sDHmtDqB,AACAI4B,AACAMyC,wBAGEtCyC,AAEF6B6B,uF;iOAyBSUkD;iEAEACaAlBNCyF,A;mFAuBYCAAKLtCAAxvDP3rDsC,A,AAyvDHmtDsB,AACAI8B,AACAMgC,AACAT+B,yF;4FAgBSc2H;2EAKTCAAKUxCAAtxDP3rDsC,A,AAuxDHmtDsB,AACAIsC,AACAM0B,AACAT+B,yF;6FA6CSgBAAtCPCoD,AADY/qD0D,AACZ+qD0tB,A;mHA2CFCAAKU3CAAj1DP3rDsC,A,AAk1DHmtDsB,AACAIiC,AACAM8B,AACAT+B,yF;iHAcSmBsCARXC4F,A;wjCA4CY7CAAv4DP3rDsC,A;AAw4DHmtDsB;AACAIuC;AACAMuB;GACAT+B;8TAyKOqBiD;kzBA4BCCmF;kDAIkB9BiE;kDAIA+BiE;mDAIACiE;wDAItBCAAgFRCgC,AACACuB,A;uEA7EQCAAuHQ3sDwBA2IG4sDmB,4DAEnBFmC,A,ukB;ytBA7NQFAAqCRCgC,AACACuB,A;uJA9BQFAA6BRCgC,AACACuB,A;0CA1BQGAA2KS7sDwBAoCE4sDmB,4DAEnBF4F,A,A;yDA7MQFAAqBRCgC,AACACuB,A;2CAlBQIAAyKSCwBAqCEHmB,iEAEnBF4F,A,A;0CA5MYMoDA+KZPkF,AAEADAApKACgC,AACACuB,A,2B;q8BAsBoDOsD;mNAUpCCqY;wlCAsFyC5DAA/wElB3rD8D,A;AAgxEf4rD+D;AAEAC+D;AAEACsC;2cA+CA0D4D;2DAIAC4D;oMAOLRW;oDAEnBF8B;kzDA0IEp7E+E;o2JAqMsBo4Ea;2LAQAAa;yNASAAuC;kVAoBX2DyB;oXAQAhEwB;uEAEQKwB;mbAuCE4DwB;ynBAgBTCAAj4FwBCc,A;MAk4FxBDAAl4FwBCc,A;oQAs5FpB9DuB;AACAAa;wnHU1jGZ+DgC;sFAoCR9vD+C;kEA4GWA2BAxCS+vDAAAA/vD0D,A,sC;iJAuDH8pCQ;ozBA2DM9pCgF;AAAAgwDqE;kdAiCXzgB0C;yrBC4LI0gBkC;AACICkD;2SAQhBCqF;ycA0IuBCuE;iFAGYCwD;AACxBrM6B;2pBA+Bc/CkB;iHACDqPyB;2JAGWDkC;AACxBrM+B;uOA4EI5CkB;2nBAkBTQ8D;wHAMgB2OqC;AACFCgL;AACZCmI;0MAcIDmK;0FAEVRoI;4BAGAUoG;gYAkEGxMoB;qqBGj1BKyMoD;qGAUqB3wD4E;oJAKrB2wDoD;oYAoBkB3wD2E;0sBAoDDikD4C;sBAG1B3qE4E;4GC+0EG0mB0D;OAAAAuD;67NEp8DmCAuF;uEAQ9BAqF;6oBC9SHgmD8G;8PAqBchmDkD;iGAGpBgmDiG;8LAMKpckB;68FCvPM5pCqD;mYAoBN4pCkB;g7FCyTHgnBwR;oDAAAAyJ;qDAAAAwH;qDAAAA0E;uEAAAAyJ;oDAAAA0J;qDAAAAqM;qDAAAA0E;inBAySOC8Q;siIAuJWC2C;2oDlBtkBJCyC;oiCA4TTC8H;wMAmIK9TsC;AAED+Tc;+FAGFAc;kFAGEAkC;q0FqBrpBqBjxDyB;kdC6LdkxD8I;mCCtMpBC2B;ilFEy8oCFnxDAAAAAAAQEoxD+H,A,A;uKA66GO7hBsB;gtYEp3vCuBvvCgE;oGAwUdAA0ByyBSAA5CtmCvBAAAzB0B8pCAAAA9pCuF,A,A,kF,A;upHmB2CbiN0B;yuFCuGUmrCmF;AAOW/CyB;AAMHK2D;o5DC5D9B2QALq/RiCc8D,A;AKr/RjCCyQ;k7DE7FqDiKsF;gkBCmhB1CCsD;itE9B3YEnzEAA8CgB2hB4L,A;sgBAfhC1hBAAmB0B0hB+L,A;o1NAwHIixD2C;wHAiBpB/wDkC;w3EiChKV28C+E;m1BA4GAAwD;gpBA2CW38CkE;QAAAAkE;yVAuUiBuxDuD;mDAcEvxD+C;+BAAAA4B;kPAO9B28CoF;2dA4CADiG;2yCEjeO8UgQ;sBAAAAwD;yBAAAAqH;+nEnB7NACiF;kkEoB4ELCuGA+BUCqN,kL;+UAgBK1kDoB;AACHvCAequBPo1CyC,A;wkB1Dj1BmB9/CmD;uBAAAAwC;4FA+IxBA2E;gBAAAA+E;4mDA6HsB4xDyC;y3CA+DE5xDqB;8BAAAA6B;WAAAA+B;08BA6DAA8C;8FAAAAqC;+CAIxB0OyB;iFAAAA8D;wtD8C9SiBmjD4B;mMAaVAmB;yCAAAAqB;0FAKF7xDmF;mFAYmCqvCAN+fZrvCa,A;KM/fYqvC0B;iCAAAAAN+fZrvCS,yBAAAA4B,A;qTvC7a1By+CkC;mNAQWqTiB;qYAIXpTkC;+RAKU1+CyE;8QAEJ+xDoB;4BAGC/xDgE;i7DAgxCiBk9CwC;o2DAo2BV6TgC;oTI/0EP/wD8C;kIAAAAuC;6IAWFgyDa;0vBA8CICa;+3EA8HgBjyDwB;4NAS7BkyD+D;+zBAiHWlyDa;0EAAAA0DA0BbAAAAAA0B,A,A;u1LHvRSorD+B;uIAMyB+GqB;AAk4B3B7FiC;8+EU9rBGtsDoC;gkBC1RIoyD6B;kKAQZCiD;2RAYYD6B;6SAoHPjR4B;8BACEmP2B;AAA6BgCAAxB7BCmC,sB;yRAqCIjCqB;qdAQLrP+B;shBAkIkB1R2C;uUAYlB2UgB;sGAQkBlkDyG;oBACPuzCsH;sOASOvzCyE;oBACPwyDqH;uXA+EbCe;kOAQiBvCmF;AACLKmC;2HAQdj3E0C;QAAAAwB;qSAQEm5Ee;qeAiBiBvCmF;AACLKmC;kMAQdj3E0C;QAAAAwB;2rCAsGF02E2D;oNAQA0CgE;idAiEAp5E0C;QAAAAwB;yOAOY82E8D;AAGR92E0C;QAAAAwB;6QAgBJAyC;QAAAAwB;45DAwEyBqoEmBAniBlB2OsB,AAAUqCAAzDVJ6B,gE,A;0FA8lBkClCU;qDAAAAoB;mEACDAE;gEAAAA6C;2KAOcEkD;AAC3BH8D;AACqBCE;2DAAAAkC;00BAkBjB3OgB;wBAAAAE;0BAAAAAA5mBxB4O2B,AAA+BsCoBA1B/BLM,2E,A;yYA+oBgClC8C;OAAAAyD;6DAElB5OAA7nBdoRoC,A;gPAkoBsBxCsC;OAAAA+D;iSI6fHrwD+G;iEAErBonDI;iIAAAAiG;iXAMC0Le;6BAAAAiEJvuBJ9CqD,oD;4SC4zBI+C+I;2aAyMJ/O8E;2aAYAA8E;mmDKv+CShkDuC;mHAAAA2C;sNAU0BgzDa;4JAGHAa;6tCAqDhCCuHAOSCAAoOeE8D,A,kb;21DAhCfFAAgCeEmC,A;6fAiEfpzDa;mFAAAA2C;q4BsBzXeA0C;uDAAAA2B;yBAAAAqC;mLA2IUA4E;QAAAA4E;y3BAwNPqzD0C;s1BpBzYzBtNqC;AACAAAjB0lBJuN8B,A;AiBzlBIvN4B;68BAmTiBlWQ;iCACMlFAhBjThB3qCa,A;mEgBiTgB2qCAhBjThB3qC8C,A;0CgBmTQ4pC0B;kWC7GTsTe;uCACIl9C8F;28BA0QAAwC;8EAEdilDgS;q1BlBqOa52DAA9rBMklE2B,A;AA8rBfxNAAlGJuNyB,A;AAmGIvNAAnGJuN8B,A;kQA9PkBlOe;+NoB+LKC0C;sBACDC2C;sBACACyC;sBACAC6C;sBACEC+C;sBACAC8C;wBACCC4C;0LpB5Vc6NwC;2iEE+QfljB6C;uTF0NNtwCsJ;8LAKd+lDAAzFJuN8B,A;sXAwGoBjlEAApsBDklE8F,A;6tJAwBWxCuC;iHAIpB0C4I;q0DyB4/RMCAsB7hSX/hEArB6DDqOsC,AAAArOwB,A,A;kkCD4nWgB40D6C;AAAOE+B;qSAKzBF8C;AAAcAoC;wCACdEiD;AAAaAuC;6XAIeF6C;AAAMEY;EAAAAiB;4+IAwwULkNuC;i1BA0GAAwC;ymHA6oKAAyC;msGAg0DlBrWsC;gpJAyzKOiJ6C;AAAOE4C;AAAMhY8C;AAASCkC;wPAKxC6X8C;AAAcAoC;wCACdEiD;AAAaAuC;0CACbhY6C;yGACACkD;qTAE4B6X6C;AAAME4C;AAAKhY8C;AAAOCe;EAAAAiB;u7HAsxGrC1uCmD;gEAAAA2B;yBAAAAuD;w/HsB9hqCFhGArBJuBorDQ,A;6MqBwB5BiDyI;8GAISZ4E;6BAAAAgB;4FAGXCqD;+LAckDD4E;uNAQvCA4E;6BAAAAgB;4FAGXCqD;qWAeFA4D;0lCAsESptDwCrBjJAs5DAN4TXtnBApBvIAAuF,A,A,mB0BrLWsnBAN4TXtnBApBvIAAoL,A,A,A;O+CpCWhyCArBjJAs5DsC,A;mVqBiKInM4E;mBAAAAgB;yIAIXCoD;mNAQyDD4E;sNAOzDCqD;iuEpB8F2Bh5C8C;uuBsB/DjB1OoH;mMAYZkgD8D;uJAIE2TwG;AAEa5TsE;4tHEiJgB0TwC;gpVtB9KxB7T2I;+1EA6DH7KuE;urBAae6K8C;wsDAiCAAgD;4CAIR5C8E;upBAeGb0D;AAJVpHuE;2bAcEoHsD;yQAEK+M4NAvHkC0K8B,oH;AAwF1BhU6B;AA+BRsJAAlHXlJwE,AACAAwE,AACAAmD,gHAIUJ+I,A;wkBAiIU9/CAU7ZXAyH,A;uCV+ZmBiNoB;iFACV6yC4E;mEAEaAqF;4PAO3B7KuE;w2BAoBUoHwD;AAJVpHuE;m+DAiBe6KgD;4CAAAAiI;AAOR5C8E;2ZAUHtTwC;wEAA+BAyE;AACf5pCAU5dfAqI,A;oCV6duBiNoB;qbAW1BovCsD;6jCAcApHuE;mjCAqBiCoBmL;iRAI3BA4C;6IAAAA6H;iiBAnDYr2CuF;0eA+DhBzjBAN9iBR40EsC,A;4MMgjBQ50EANhjBR40E6I,A;iCMojBQlcuD;wkEAwBYj1CAUzjBXAyH,A;uCV2jBmBiNoB;0IACD6yCoE;4PAMvB7KuD;60BAmBUoHwD;AAJVpHuE;mhFCriB6C8eAyB0BvCCgC,A;6FzBxBkBCAyBoCCDgB,A;irBzBdDEAyBYSFkD,A;AzBXTGAyBYSHkD,A;8xBzBJzBzdoBL8jqBM6dAsBpoqBbj2DArB2DD6BqD,AAAA7BoD,A,A,A;iSIgBqB6BoB;AAEMiNoB;AACnB7OAZhEyBy8CCA+BHgK2B,A,A;uHY8BT7kDoD;mDAMDiNoB;AACR7OAZpEqBy8CC,A;AYgEzBz8CAZhEyBy8CAA+BHgK2B,A,A;6iBY8Cb/HAMoJV98C+C,A;ANnJA43C0B;AADUkFAMoJV98C8C,I;gDNnJA43CuD;gIAGHsRiDD8FN3sEANvNF40E0C,A,0G;ovBO6IwG1U6F;gpBAqBlGuMgB;AAzCEE+B;AAyCFFkH;AAzCEE8C;AAyCFF0C;sPAzCEE2B;0PAwDFrMI;6EAAAAAMkDNFiE,0D;6DN7C0B1vCoB;AAAS7OAZ9IEy8CC,A;AYgEzBz8CAZhEyBy8CAA+BHgK2B,A,A;gmBY2Hb/HAMuEV98C+C,A;ANtEA43C0B;AADUkFAMuEV98C8C,I;iDNtEA43CuD;sbAaUkFAMyDV98C+C,A;ANxDA43C0B;AADUkFAMyDV98C8C,I;iDNxDA43CuD;oIAGUf6J;yBAAAAkB;saAmBAiGAMkCV98C+C,A;ANjCA43C0B;AADUkFAMkCV98C8C,I;iDNjCA43CuD;iHAGHqRgB;AAlHACiC;AAkHADAD5BN1sEAN/MF40EiG,A,c;AOyHQjI4C;AAkHADmD;uaAWFEgB;AA7HEDiC;AA6HFC4E;AA7HEDkD;AA6HFCsC;g8EA1Ba3qDAZ/LiB47CCkCpBjBwKgE,qG,A;4/qDvD+rCF4PsK;wWAUAC0K;sWAUAC0G;4XAUAC8G;gRqBhtBgC1nDoB;mtBIkB/BmmDkB;yG2BjfgBpzD+BAsLhB40D2C,AAEpB50D8B,A;gJnB1LgDm+CAXqTjBn+CgD,A;2vBpB5NJHAAsE3BwrD4B,A;AI1EkBltEAA8CgB2hBAANKvxB" + } +} diff --git a/example/web/icons/Icon-maskable-192.png b/example/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000..eb9b4d7 Binary files /dev/null and b/example/web/icons/Icon-maskable-192.png differ diff --git a/example/web/icons/Icon-maskable-512.png b/example/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000..d69c566 Binary files /dev/null and b/example/web/icons/Icon-maskable-512.png differ diff --git a/ios/livekit_client.podspec b/ios/livekit_client.podspec index 7d8d4e0..6e324d1 100644 --- a/ios/livekit_client.podspec +++ b/ios/livekit_client.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'livekit_client' - s.version = '1.1.13' + s.version = '1.2.2' s.summary = 'Open source platform for real-time audio and video.' s.description = 'Open source platform for real-time audio and video.' s.homepage = 'https://livekit.io/' @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.static_framework = true s.dependency 'Flutter' - s.dependency 'WebRTC-SDK', '104.5112.09' + s.dependency 'WebRTC-SDK', '104.5112.16' end diff --git a/lib/livekit_client.dart b/lib/livekit_client.dart index e541da6..78af404 100644 --- a/lib/livekit_client.dart +++ b/lib/livekit_client.dart @@ -4,6 +4,10 @@ library livekit_client; export 'src/core/room.dart'; export 'src/events.dart'; export 'src/exceptions.dart'; +export 'src/e2ee/e2ee_manager.dart'; +export 'src/e2ee/events.dart'; +export 'src/e2ee/options.dart'; +export 'src/e2ee/key_provider.dart'; export 'src/extensions.dart' show WidgetsBindingCompatible; export 'src/hardware/hardware.dart'; export 'src/livekit.dart'; diff --git a/lib/src/core/engine.dart b/lib/src/core/engine.dart index 367e943..1814fca 100644 --- a/lib/src/core/engine.dart +++ b/lib/src/core/engine.dart @@ -6,6 +6,7 @@ import 'package:collection/collection.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; import 'package:meta/meta.dart'; +import '../e2ee/options.dart'; import '../events.dart'; import '../exceptions.dart'; import '../extensions.dart'; @@ -188,6 +189,21 @@ class Engine extends Disposable with EventsEmittable { }) async { // TODO: Check if cid already published + lk_models.Encryption_Type encryptionType = lk_models.Encryption_Type.NONE; + if (roomOptions.e2eeOptions != null) { + switch (roomOptions.e2eeOptions!.encryptionType) { + case EncryptionType.kNone: + encryptionType = lk_models.Encryption_Type.NONE; + break; + case EncryptionType.kGcm: + encryptionType = lk_models.Encryption_Type.GCM; + break; + case EncryptionType.kCustom: + encryptionType = lk_models.Encryption_Type.CUSTOM; + break; + } + } + // send request to add track signalClient.sendAddTrack( cid: cid, @@ -197,6 +213,7 @@ class Engine extends Disposable with EventsEmittable { dimensions: dimensions, dtx: dtx, videoLayers: videoLayers, + encryptionType: encryptionType, ); // wait for response, or timeout @@ -299,6 +316,11 @@ class Engine extends Disposable with EventsEmittable { ); } + if (kIsWeb && roomOptions.e2eeOptions != null) { + rtcConfiguration = + rtcConfiguration.copyWith(encodedInsertableStreams: true); + } + return rtcConfiguration; } diff --git a/lib/src/core/room.dart b/lib/src/core/room.dart index 7f6e61a..bdd080b 100644 --- a/lib/src/core/room.dart +++ b/lib/src/core/room.dart @@ -7,7 +7,9 @@ import 'package:livekit_client/src/support/app_state.dart'; import 'package:meta/meta.dart'; import '../core/signal_client.dart'; +import '../e2ee/e2ee_manager.dart'; import '../events.dart'; +import '../exceptions.dart'; import '../extensions.dart'; import '../internal/events.dart'; import '../logger.dart'; @@ -71,6 +73,9 @@ class Room extends DisposableChangeNotifier with EventsEmittable { String? get serverRegion => _serverRegion; String? _serverRegion; + E2EEManager? get e2eeManager => _e2eeManager; + + E2EEManager? _e2eeManager; bool get isRecording => _isRecording; bool _isRecording = false; @@ -140,14 +145,22 @@ class Room extends DisposableChangeNotifier with EventsEmittable { ConnectOptions? connectOptions, RoomOptions? roomOptions, FastConnectOptions? fastConnectOptions, - }) => - engine.connect( - url, - token, - connectOptions: connectOptions, - roomOptions: roomOptions, - fastConnectOptions: fastConnectOptions, - ); + }) { + if (roomOptions?.e2eeOptions != null) { + if (!lkPlatformSupportsE2EE()) { + throw LiveKitE2EEException('E2EE is not supported on this platform'); + } + _e2eeManager = E2EEManager(roomOptions!.e2eeOptions!.keyProvider); + _e2eeManager!.setup(this); + } + return engine.connect( + url, + token, + connectOptions: connectOptions, + roomOptions: roomOptions, + fastConnectOptions: fastConnectOptions, + ); + } void _setUpSignalListeners() => _signalListener ..on((event) { @@ -378,6 +391,14 @@ class Room extends DisposableChangeNotifier with EventsEmittable { await _cleanUp(); } + Future setE2EEEnabled(bool enabled) async { + if (_e2eeManager != null) { + await _e2eeManager!.setEnabled(enabled); + } else { + throw LiveKitE2EEException('_e2eeManager not setup!'); + } + } + RemoteParticipant _getOrCreateRemoteParticipant( String sid, lk_models.ParticipantInfo? info) { RemoteParticipant? participant = _participants[sid]; diff --git a/lib/src/core/signal_client.dart b/lib/src/core/signal_client.dart index c09c2cc..855669e 100644 --- a/lib/src/core/signal_client.dart +++ b/lib/src/core/signal_client.dart @@ -350,6 +350,7 @@ extension SignalClientRequests on SignalClient { required String name, required lk_models.TrackType type, required lk_models.TrackSource source, + required lk_models.Encryption_Type encryptionType, VideoDimensions? dimensions, bool? dtx, Iterable? videoLayers, @@ -359,6 +360,7 @@ extension SignalClientRequests on SignalClient { name: name, type: type, source: source, + encryption: encryptionType, ); if (type == lk_models.TrackType.VIDEO) { diff --git a/lib/src/e2ee/e2ee_manager.dart b/lib/src/e2ee/e2ee_manager.dart new file mode 100644 index 0000000..041fadb --- /dev/null +++ b/lib/src/e2ee/e2ee_manager.dart @@ -0,0 +1,179 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:livekit_client/src/e2ee/events.dart'; +import 'package:livekit_client/src/extensions.dart'; + +import '../events.dart'; +import '../core/room.dart'; +import '../managers/event.dart'; +import 'key_provider.dart'; + +class E2EEManager { + Room? _room; + final Map _frameCryptors = {}; + final List _senderFrameCryptors = []; + final BaseKeyProvider _keyProvider; + final Algorithm _algorithm = Algorithm.kAesGcm; + bool _enabled = true; + EventsListener? _listener; + E2EEManager(this._keyProvider); + + Future setup(Room room) async { + if (_room != room) { + await _cleanUp(); + _room = room; + _listener = _room!.createListener(); + _listener! + ..on((event) async { + var trackId = event.publication.sid; + var participantId = event.participant.sid; + var frameCryptor = await _addRtpSender( + event.publication.track!.sender!, + participantId, + trackId, + event.publication.track!.kind.name.toLowerCase()); + if (kIsWeb && event.publication.track!.codec != null) { + await frameCryptor.updateCodec(event.publication.track!.codec!); + } + frameCryptor.onFrameCryptorStateChanged = (trackId, state) { + if (kDebugMode) { + print( + 'Sender::onFrameCryptorStateChanged: $state, trackId: $trackId'); + } + var participant = event.participant; + [event.participant.events, participant.room.events] + .emit(TrackE2EEStateEvent( + participant: participant, + publication: event.publication, + state: _e2eeStateFromFrameCryptoState(state), + )); + }; + _senderFrameCryptors.add(frameCryptor); + }) + ..on((event) async { + var trackId = event.publication.sid; + var frameCryptor = _frameCryptors.remove(trackId); + _senderFrameCryptors.remove(frameCryptor); + await frameCryptor?.dispose(); + }) + ..on((event) async { + var trackId = event.publication.sid; + var participantId = event.participant.sid; + var frameCryptor = await _addRtpReceiver(event.track.receiver!, + participantId, trackId, event.track.kind.name.toLowerCase()); + if (kIsWeb) { + var codec = event.publication.mimeType.split('/')[1]; + await frameCryptor.updateCodec(codec.toLowerCase()); + } + frameCryptor.onFrameCryptorStateChanged = (trackId, state) { + if (kDebugMode) { + print( + 'Receiver::onFrameCryptorStateChanged: $state, trackId: $trackId'); + } + var participant = event.participant; + [event.participant.events, participant.room.events] + .emit(TrackE2EEStateEvent( + participant: participant, + publication: event.publication, + state: _e2eeStateFromFrameCryptoState(state), + )); + }; + }) + ..on((event) async { + var trackId = event.publication.sid; + var frameCryptor = _frameCryptors.remove(trackId); + await frameCryptor?.dispose(); + }); + } + } + + Future ratchetKey() async { + for (var frameCryptor in _senderFrameCryptors) { + var newKey = await _keyProvider.ratchetKey(frameCryptor.participantId, 0); + if (kDebugMode) { + print('newKey: $newKey'); + } + } + } + + Future _cleanUp() async { + await _listener?.cancelAll(); + await _listener?.dispose(); + _listener = null; + for (var frameCryptor in _frameCryptors.values) { + await frameCryptor.dispose(); + } + _frameCryptors.clear(); + } + + Future _addRtpSender(RTCRtpSender sender, String participantId, + String trackId, String kind) async { + var pid = '$kind-sender-$participantId-$trackId'; + var frameCryptor = await FrameCryptorFactory.instance + .createFrameCryptorForRtpSender( + participantId: pid, + sender: sender, + algorithm: _algorithm, + keyProvider: _keyProvider.keyProvider); + _frameCryptors[trackId] = frameCryptor; + await frameCryptor.setEnabled(_enabled); + if (_keyProvider.options.sharedKey) { + await _keyProvider.keyProvider + .setKey(participantId: pid, index: 0, key: _keyProvider.sharedKey!); + await frameCryptor.setKeyIndex(0); + } + return frameCryptor; + } + + Future _addRtpReceiver(RTCRtpReceiver receiver, + String participantId, String trackId, String kind) async { + var pid = '$kind-receiver-$participantId-$trackId'; + var frameCryptor = await FrameCryptorFactory.instance + .createFrameCryptorForRtpReceiver( + participantId: pid, + receiver: receiver, + algorithm: _algorithm, + keyProvider: _keyProvider.keyProvider); + _frameCryptors[trackId] = frameCryptor; + await frameCryptor.setEnabled(_enabled); + if (_keyProvider.options.sharedKey) { + await _keyProvider.keyProvider + .setKey(participantId: pid, index: 0, key: _keyProvider.sharedKey!); + await frameCryptor.setKeyIndex(0); + } + return frameCryptor; + } + + Future setEnabled(bool enabled) async { + _enabled = enabled; + for (var frameCryptor in _frameCryptors.entries) { + await frameCryptor.value.setEnabled(enabled); + if (_keyProvider.options.sharedKey) { + await _keyProvider.keyProvider.setKey( + participantId: frameCryptor.key, + index: 0, + key: _keyProvider.sharedKey!); + await frameCryptor.value.setKeyIndex(0); + } + } + } + + E2EEState _e2eeStateFromFrameCryptoState(FrameCryptorState state) { + switch (state) { + case FrameCryptorState.FrameCryptorStateNew: + return E2EEState.kNew; + case FrameCryptorState.FrameCryptorStateOk: + return E2EEState.kOk; + case FrameCryptorState.FrameCryptorStateMissingKey: + return E2EEState.kMissingKey; + case FrameCryptorState.FrameCryptorStateEncryptionFailed: + return E2EEState.kEncryptionFailed; + case FrameCryptorState.FrameCryptorStateDecryptionFailed: + return E2EEState.kDecryptionFailed; + case FrameCryptorState.FrameCryptorStateInternalError: + return E2EEState.kInternalError; + case FrameCryptorState.FrameCryptorStateKeyRatcheted: + return E2EEState.kKeyRatcheted; + } + } +} diff --git a/lib/src/e2ee/events.dart b/lib/src/e2ee/events.dart new file mode 100644 index 0000000..6619e16 --- /dev/null +++ b/lib/src/e2ee/events.dart @@ -0,0 +1,28 @@ +import '../../livekit_client.dart'; + +enum E2EEState { + kNew, + kOk, + kKeyRatcheted, + kMissingKey, + kEncryptionFailed, + kDecryptionFailed, + kInternalError, +} + +/// The [E2EEState] on the track. +/// Emitted by [E2EEManager]. +class TrackE2EEStateEvent with RoomEvent, ParticipantEvent { + final Participant participant; + final TrackPublication publication; + final E2EEState state; + const TrackE2EEStateEvent({ + required this.participant, + required this.publication, + required this.state, + }); + + @override + String toString() => '${runtimeType}' + '(participant: ${participant}, publication: ${publication}, state: ${state})'; +} diff --git a/lib/src/e2ee/key_provider.dart b/lib/src/e2ee/key_provider.dart new file mode 100644 index 0000000..ab99ecb --- /dev/null +++ b/lib/src/e2ee/key_provider.dart @@ -0,0 +1,87 @@ +import 'dart:typed_data'; + +import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; + +const defaultRatchetSalt = 'LKFrameEncryptionKey'; +const defaultMagicBytes = 'LK-ROCKS'; +const defaultRatchetWindowSize = 16; + +class KeyInfo { + final String participantId; + final int keyIndex; + final Uint8List key; + KeyInfo({ + required this.participantId, + required this.keyIndex, + required this.key, + }); +} + +abstract class KeyProvider { + Future setKey(String key, {String? participantId, int keyIndex = 0}); + Future ratchetKey(String participantId, int index); + rtc.KeyProvider get keyProvider; +} + +class BaseKeyProvider implements KeyProvider { + final Map> _keys = {}; + Uint8List? _sharedKey; + final rtc.KeyProviderOptions options; + final rtc.KeyProvider _keyProvider; + @override + rtc.KeyProvider get keyProvider => _keyProvider; + + Uint8List? get sharedKey => _sharedKey; + + BaseKeyProvider(this._keyProvider, this.options); + + static Future create({ + bool sharedKey = true, + String? ratchetSalt, + String? uncryptedMagicBytes, + int? ratchetWindowSize, + }) async { + rtc.KeyProviderOptions options = rtc.KeyProviderOptions( + sharedKey: sharedKey, + ratchetSalt: + Uint8List.fromList((ratchetSalt ?? defaultRatchetSalt).codeUnits), + ratchetWindowSize: ratchetWindowSize ?? defaultRatchetWindowSize, + uncryptedMagicBytes: Uint8List.fromList( + (uncryptedMagicBytes ?? defaultMagicBytes).codeUnits), + ); + final keyProvider = await rtc.FrameCryptorFactory.instance + .createDefaultKeyProvider(options); + return BaseKeyProvider(keyProvider, options); + } + + @override + Future ratchetKey(String participantId, int index) => + _keyProvider.ratchetKey(participantId: participantId, index: index); + + @override + Future setKey(String key, + {String? participantId, int keyIndex = 0}) async { + if (options.sharedKey) { + _sharedKey = Uint8List.fromList(key.codeUnits); + return; + } + final keyInfo = KeyInfo( + participantId: participantId ?? '', + keyIndex: keyIndex, + key: Uint8List.fromList(key.codeUnits), + ); + return _setKey(keyInfo); + } + + Future _setKey(KeyInfo keyInfo) async { + if (!_keys.containsKey(keyInfo.participantId)) { + _keys[keyInfo.participantId] = {}; + } + _keys[keyInfo.participantId]![keyInfo.keyIndex] = keyInfo.key; + await _keyProvider.setKey( + participantId: keyInfo.participantId, + index: keyInfo.keyIndex, + key: keyInfo.key, + ); + } +} diff --git a/lib/src/e2ee/options.dart b/lib/src/e2ee/options.dart new file mode 100644 index 0000000..5dc719c --- /dev/null +++ b/lib/src/e2ee/options.dart @@ -0,0 +1,13 @@ +import 'key_provider.dart'; + +enum EncryptionType { + kNone, + kGcm, + kCustom, +} + +class E2EEOptions { + final BaseKeyProvider keyProvider; + final EncryptionType encryptionType = EncryptionType.kGcm; + const E2EEOptions({required this.keyProvider}); +} diff --git a/lib/src/exceptions.dart b/lib/src/exceptions.dart index 41eee83..9e074c8 100644 --- a/lib/src/exceptions.dart +++ b/lib/src/exceptions.dart @@ -57,3 +57,11 @@ class DataPublishException extends LiveKitException { class TimeoutException extends LiveKitException { TimeoutException([String msg = 'Timeout']) : super._(msg); } + +/// An exception for End to End Encryption. +class LiveKitE2EEException extends LiveKitException { + LiveKitE2EEException([String msg = 'E2EE error']) : super._(msg); + + @override + String toString() => 'E2EE Exception: [$runtimeType] $message'; +} diff --git a/lib/src/extensions.dart b/lib/src/extensions.dart index 7157fe6..7307a48 100644 --- a/lib/src/extensions.dart +++ b/lib/src/extensions.dart @@ -2,12 +2,10 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; +import 'package:livekit_client/livekit_client.dart'; -import 'events.dart'; -import 'managers/event.dart'; import 'proto/livekit_models.pb.dart' as lk_models; import 'proto/livekit_rtc.pb.dart' as lk_rtc; -import 'types/other.dart'; extension DataPacketKindExt on lk_models.DataPacket_Kind { Reliability toSDKType() => { @@ -172,6 +170,14 @@ extension WidgetsBindingCompatible on WidgetsBinding { static WidgetsBinding? get instance => WidgetsBinding.instance; } +extension EncryptionTypeExt on lk_models.Encryption_Type { + EncryptionType toLkType() => { + lk_models.Encryption_Type.NONE: EncryptionType.kNone, + lk_models.Encryption_Type.GCM: EncryptionType.kGcm, + lk_models.Encryption_Type.CUSTOM: EncryptionType.kCustom, + }[this]!; +} + extension DisconnectReasonExt on lk_models.DisconnectReason { DisconnectReason toSDKType() => { lk_models.DisconnectReason.UNKNOWN_REASON: DisconnectReason.unknown, diff --git a/lib/src/options.dart b/lib/src/options.dart index 5ceebaa..57379e3 100644 --- a/lib/src/options.dart +++ b/lib/src/options.dart @@ -1,5 +1,6 @@ import 'constants.dart'; import 'core/room.dart'; +import 'e2ee/options.dart'; import 'publication/remote.dart'; import 'track/local/audio.dart'; import 'track/local/video.dart'; @@ -88,6 +89,9 @@ class RoomOptions { /// Defaults to true. final bool stopLocalTrackOnUnpublish; + /// Options for end-to-end encryption. + final E2EEOptions? e2eeOptions; + const RoomOptions({ this.defaultCameraCaptureOptions = const CameraCaptureOptions(), this.defaultScreenShareCaptureOptions = const ScreenShareCaptureOptions(), @@ -98,6 +102,7 @@ class RoomOptions { this.adaptiveStream = false, this.dynacast = false, this.stopLocalTrackOnUnpublish = true, + this.e2eeOptions, }); RoomOptions copyWith({ @@ -134,6 +139,9 @@ class RoomOptions { /// Options used when publishing video. class VideoPublishOptions { + /// The video codec to use. + final String videoCodec; + /// If provided, this will be used instead of the SDK's suggested encodings. /// Usually you don't need to provide this. /// Defaults to null. @@ -149,6 +157,7 @@ class VideoPublishOptions { final List screenShareSimulcastLayers; const VideoPublishOptions({ + this.videoCodec = 'H264', this.videoEncoding, this.simulcast = true, this.videoSimulcastLayers = const [], diff --git a/lib/src/participant/local.dart b/lib/src/participant/local.dart index c82ec12..e92d8c3 100644 --- a/lib/src/participant/local.dart +++ b/lib/src/participant/local.dart @@ -12,6 +12,7 @@ import '../options.dart'; import '../proto/livekit_models.pb.dart' as lk_models; import '../proto/livekit_rtc.pb.dart' as lk_rtc; import '../publication/local.dart'; +import '../support/platform.dart'; import '../track/local/audio.dart'; import '../track/local/local.dart'; import '../track/local/video.dart'; @@ -182,6 +183,40 @@ class LocalParticipant extends Participant { init: transceiverInit, ); + if (lkBrowser() != BrowserType.firefox) { + var videoCodec = publishOptions.videoCodec.toLowerCase(); + var caps = await rtc.getRtpSenderCapabilities('video'); + List matched = []; + List partialMatched = []; + List unmatched = []; + for (var c in caps.codecs!) { + var codec = c.mimeType.toLowerCase(); + if (codec == 'audio/opus') { + matched.add(c); + continue; + } + + var matchesVideoCodec = codec == 'video/$videoCodec'; + if (!matchesVideoCodec) { + unmatched.add(c); + continue; + } + if (publishOptions.videoCodec == 'h264') { + if (c.sdpFmtpLine != null && + c.sdpFmtpLine!.contains('profile-level-id=42e01f')) { + matched.add(c); + } else { + partialMatched.add(c); + } + continue; + } + matched.add(c); + } + matched.addAll([...partialMatched, ...unmatched]); + await track.transceiver?.setCodecPreferences(matched); + track.codec = videoCodec; + } + // prefer to maintainResolution for screen share if (track.source == TrackSource.screenShareVideo) { var sender = track.transceiver!.sender; diff --git a/lib/src/participant/participant.dart b/lib/src/participant/participant.dart index 4205354..dde4108 100644 --- a/lib/src/participant/participant.dart +++ b/lib/src/participant/participant.dart @@ -2,6 +2,7 @@ import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; import '../core/room.dart'; +import '../e2ee/options.dart'; import '../events.dart'; import '../extensions.dart'; import '../logger.dart'; @@ -9,12 +10,9 @@ import '../managers/event.dart'; import '../proto/livekit_models.pb.dart' as lk_models; import '../publication/track_publication.dart'; import '../support/disposable.dart'; -import '../track/local/local.dart'; import '../track/track.dart'; import '../types/other.dart'; import '../types/participant_permissions.dart'; -import 'local.dart'; -import 'remote.dart'; /// Represents a Participant in the room, notifies changes via delegates as /// well as ChangeNotifier/providers. @@ -94,6 +92,16 @@ abstract class Participant // Must be implemented by child class. List get audioTracks; + EncryptionType get firstTrackEncryptionType { + if (hasAudio) { + return audioTracks.first.encryptionType; + } else if (hasVideo) { + return videoTracks.first.encryptionType; + } else { + return EncryptionType.kNone; + } + } + @internal bool get hasInfo => _participantInfo != null; diff --git a/lib/src/publication/track_publication.dart b/lib/src/publication/track_publication.dart index 2e2ae03..aefec69 100644 --- a/lib/src/publication/track_publication.dart +++ b/lib/src/publication/track_publication.dart @@ -1,17 +1,11 @@ +import 'package:livekit_client/livekit_client.dart'; import 'package:meta/meta.dart'; import '../core/signal_client.dart'; -import '../events.dart'; import '../extensions.dart'; import '../internal/events.dart'; -import '../logger.dart'; -import '../participant/participant.dart'; import '../proto/livekit_models.pb.dart' as lk_models; import '../support/disposable.dart'; -import '../track/local/local.dart'; -import '../track/track.dart'; -import '../types/other.dart'; -import '../types/video_dimensions.dart'; /// Represents a track that's published to the server. This class contains /// metadata associated with tracks. @@ -49,6 +43,11 @@ abstract class TrackPublication extends Disposable { bool get subscribed => track != null; + EncryptionType get encryptionType { + if (latestInfo == null) return EncryptionType.kNone; + return latestInfo!.encryption.toLkType(); + } + @internal lk_models.TrackInfo? latestInfo; diff --git a/lib/src/support/platform.dart b/lib/src/support/platform.dart index d0b59ca..ff680a8 100644 --- a/lib/src/support/platform.dart +++ b/lib/src/support/platform.dart @@ -1,5 +1,4 @@ import 'dart:io'; - import 'platform/io.dart' if (dart.library.html) 'platform/web.dart'; // Returns the current platform which works for both web and devices. @@ -7,6 +6,8 @@ PlatformType lkPlatform() => lkPlatformImplementation(); bool lkPlatformIs(PlatformType type) => lkPlatform() == type; +bool lkPlatformSupportsE2EE() => lkE2EESupportedImplementation(); + bool lkPlatformIsTest() => Platform.environment.containsKey('FLUTTER_TEST'); BrowserType lkBrowser() => lkBrowserImplementation(); diff --git a/lib/src/support/platform/io.dart b/lib/src/support/platform/io.dart index e393d98..706641d 100644 --- a/lib/src/support/platform/io.dart +++ b/lib/src/support/platform/io.dart @@ -12,6 +12,16 @@ PlatformType lkPlatformImplementation() { throw UnsupportedError('Unknown Platform'); } +bool lkE2EESupportedImplementation() { + return [ + PlatformType.windows, + PlatformType.linux, + PlatformType.macOS, + PlatformType.iOS, + PlatformType.android, + ].contains(lkPlatformImplementation()); +} + BrowserType lkBrowserImplementation() { return BrowserType.unknown; } diff --git a/lib/src/support/platform/web.dart b/lib/src/support/platform/web.dart index f9fd4aa..96f352b 100644 --- a/lib/src/support/platform/web.dart +++ b/lib/src/support/platform/web.dart @@ -1,9 +1,23 @@ import '../platform.dart'; +import 'dart:js' as js; import 'package:platform_detect/platform_detect.dart'; PlatformType lkPlatformImplementation() => PlatformType.web; +bool lkE2EESupportedImplementation() { + return isInsertableStreamSupported() || isScriptTransformSupported(); +} + +bool isScriptTransformSupported() { + return js.context['RTCRtpScriptTransform'] != null; +} + +bool isInsertableStreamSupported() { + return js.context['RTCRtpSender'] != null && + js.context['RTCRtpSender']['prototype']['createEncodedStreams'] != null; +} + BrowserType lkBrowserImplementation() { if (browser.isChrome) return BrowserType.chrome; if (browser.isFirefox) return BrowserType.firefox; diff --git a/lib/src/track/local/local.dart b/lib/src/track/local/local.dart index c8dceb7..f2dd47a 100644 --- a/lib/src/track/local/local.dart +++ b/lib/src/track/local/local.dart @@ -50,6 +50,8 @@ abstract class LocalTrack extends Track { bool _published = false; bool get isPublished => _published; + String? codec; + LocalTrack( String name, lk_models.TrackType kind, diff --git a/lib/src/types/other.dart b/lib/src/types/other.dart index 4f28d64..c0c8a57 100644 --- a/lib/src/types/other.dart +++ b/lib/src/types/other.dart @@ -92,11 +92,13 @@ class RTCConfiguration { final int? iceCandidatePoolSize; final List? iceServers; final RTCIceTransportPolicy? iceTransportPolicy; + final bool? encodedInsertableStreams; const RTCConfiguration({ this.iceCandidatePoolSize, this.iceServers, this.iceTransportPolicy, + this.encodedInsertableStreams, }); Map toMap() { @@ -108,6 +110,8 @@ class RTCConfiguration { return { // only supports unified plan 'sdpSemantics': 'unified-plan', + if (encodedInsertableStreams != null) + 'encodedInsertableStreams': encodedInsertableStreams, if (iceServersMap.isNotEmpty) 'iceServers': iceServersMap, if (iceCandidatePoolSize != null) 'iceCandidatePoolSize': iceCandidatePoolSize, @@ -121,11 +125,14 @@ class RTCConfiguration { int? iceCandidatePoolSize, List? iceServers, RTCIceTransportPolicy? iceTransportPolicy, + bool? encodedInsertableStreams, }) => RTCConfiguration( iceCandidatePoolSize: iceCandidatePoolSize ?? this.iceCandidatePoolSize, iceServers: iceServers ?? this.iceServers, iceTransportPolicy: iceTransportPolicy ?? this.iceTransportPolicy, + encodedInsertableStreams: + encodedInsertableStreams ?? this.encodedInsertableStreams, ); } diff --git a/macos/livekit_client.podspec b/macos/livekit_client.podspec index 6cdcb67..ffd126a 100644 --- a/macos/livekit_client.podspec +++ b/macos/livekit_client.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'livekit_client' - s.version = '1.1.14' + s.version = '1.2.2' s.summary = 'Open source platform for real-time audio and video.' s.description = 'Open source platform for real-time audio and video.' s.homepage = 'https://livekit.io/' @@ -16,5 +16,5 @@ Pod::Spec.new do |s| s.static_framework = true s.dependency 'FlutterMacOS' - s.dependency 'WebRTC-SDK', '104.5112.12' + s.dependency 'WebRTC-SDK', '104.5112.16' end diff --git a/pubspec.lock b/pubspec.lock index 66e6da4..2ff1398 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -129,6 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + cryptography: + dependency: "direct main" + description: + name: cryptography + sha256: e0e37f79665cd5c86e8897f9abe1accfe813c0cc5299dab22256e22fddc1fef8 + url: "https://pub.dev" + source: hosted + version: "2.0.5" dart_style: dependency: transitive description: @@ -227,11 +235,12 @@ packages: flutter_webrtc: dependency: "direct main" description: - name: flutter_webrtc - sha256: f8904369f3ad57945a797481bf079c281f4944ad4635e9d412529141d81c9c76 - url: "https://pub.dev" - source: hosted - version: "0.9.25" + path: "." + ref: "feat/frame-encryption" + resolved-ref: abb6aba36434fa3a30ce5c56b6c521acb83b1139 + url: "https://github.com/flutter-webrtc/flutter-webrtc.git" + source: git + version: "0.9.20" flutter_window_close: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index ed17116..268ccb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,6 +16,7 @@ dependencies: async: ^2.9.0 collection: ^1.16.0 connectivity_plus: ^3.0.2 + cryptography: ^2.0.5 fixnum: ^1.0.1 meta: ^1.8.0 http: ^0.13.5 @@ -23,11 +24,12 @@ dependencies: uuid: ^3.0.6 synchronized: ^3.0.0+3 protobuf: ^2.1.0 - flutter_webrtc: 0.9.26 + flutter_webrtc: 0.9.27 flutter_window_close: ^0.2.2 device_info_plus: ^8.0.0 webrtc_interface: 1.0.13 dart_webrtc: 1.0.16 + js: ^0.6.4 platform_detect: ^2.0.7 dev_dependencies: diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..2f189ef --- /dev/null +++ b/web/README.md @@ -0,0 +1,3 @@ +# Upgrade Notes + +When the flutter-webrtc version is upgraded ([web/e2ee*.dart](https://github.com/flutter-webrtc/flutter-webrtc/tree/main/web) changes), please directly overwrite these files from the corresponding flutter-webrtc version diff --git a/web/crypto.dart b/web/crypto.dart new file mode 100644 index 0000000..b9769ee --- /dev/null +++ b/web/crypto.dart @@ -0,0 +1,94 @@ +import 'dart:async'; +import 'dart:typed_data'; +import 'dart:js_util' as jsutil; +import 'dart:html' as html; + +import 'package:js/js.dart'; + +@JS('Promise') +class Promise { + external factory Promise._(); +} + +@JS('Algorithm') +class Algorithm { + external String get name; +} + +@JS('crypto.subtle.encrypt') +external Promise encrypt( + dynamic algorithm, + html.CryptoKey key, + ByteBuffer data, +); + +@JS('crypto.subtle.decrypt') +external Promise decrypt( + dynamic algorithm, + html.CryptoKey key, + ByteBuffer data, +); + +@JS() +@anonymous +class AesGcmParams { + external factory AesGcmParams({ + required String name, + required ByteBuffer iv, + ByteBuffer? additionalData, + int tagLength = 128, + }); +} + +ByteBuffer jsArrayBufferFrom(List data) { + // Avoid copying if possible + if (data is Uint8List && + data.offsetInBytes == 0 && + data.lengthInBytes == data.buffer.lengthInBytes) { + return data.buffer; + } + // Copy + return Uint8List.fromList(data).buffer; +} + +@JS('crypto.subtle.importKey') +external Promise importKey( + String format, + ByteBuffer keyData, + dynamic algorithm, + bool extractable, + List keyUsages, +); + +@JS('crypto.subtle.exportKey') +external Promise exportKey( + String format, + html.CryptoKey key, +); + +@JS('crypto.subtle.deriveKey') +external Promise deriveKey( + dynamic algorithm, + html.CryptoKey baseKey, + dynamic derivedKeyAlgorithm, + bool extractable, + List keyUsages); + +@JS('crypto.subtle.deriveBits') +external Promise deriveBits( + dynamic algorithm, + html.CryptoKey baseKey, + int length, +); + +Future impportKeyFromRawData(List secretKeyData, + {required String webCryptoAlgorithm, + required List keyUsages}) async { + return jsutil.promiseToFuture(importKey( + 'raw', + jsArrayBufferFrom(secretKeyData), + jsutil.jsify({'name': webCryptoAlgorithm}), + false, + keyUsages, + )); +} diff --git a/web/e2ee.cryptor.dart b/web/e2ee.cryptor.dart new file mode 100644 index 0000000..ebb5cb5 --- /dev/null +++ b/web/e2ee.cryptor.dart @@ -0,0 +1,643 @@ +import 'dart:html'; +import 'dart:js'; +import 'dart:js_util' as jsutil; +import 'dart:math'; +import 'dart:typed_data'; +import 'dart:collection'; +import 'dart:async'; + +import 'package:flutter_webrtc/src/web/rtc_transform_stream.dart'; + +import 'crypto.dart' as crypto; +import 'e2ee.utils.dart'; + +class KeyOptions { + KeyOptions({ + required this.sharedKey, + required this.ratchetSalt, + required this.ratchetWindowSize, + this.uncryptedMagicBytes, + }); + bool sharedKey; + Uint8List ratchetSalt; + int ratchetWindowSize; + Uint8List? uncryptedMagicBytes; + + @override + String toString() { + return 'KeyOptions{sharedKey: $sharedKey, ratchetWindowSize: $ratchetWindowSize}'; + } +} + +const IV_LENGTH = 12; + +const kNaluTypeMask = 0x1f; + +/// Coded slice of a non-IDR picture +const SLICE_NON_IDR = 1; + +/// Coded slice data partition A +const SLICE_PARTITION_A = 2; + +/// Coded slice data partition B +const SLICE_PARTITION_B = 3; + +/// Coded slice data partition C +const SLICE_PARTITION_C = 4; + +/// Coded slice of an IDR picture +const SLICE_IDR = 5; + +/// Supplemental enhancement information +const SEI = 6; + +/// Sequence parameter set +const SPS = 7; + +/// Picture parameter set +const PPS = 8; + +/// Access unit delimiter +const AUD = 9; + +/// End of sequence +const END_SEQ = 10; + +/// End of stream +const END_STREAM = 11; + +/// Filler data +const FILLER_DATA = 12; + +/// Sequence parameter set extension +const SPS_EXT = 13; + +/// Prefix NAL unit +const PREFIX_NALU = 14; + +/// Subset sequence parameter set +const SUBSET_SPS = 15; + +/// Depth parameter set +const DPS = 16; + +// 17, 18 reserved + +/// Coded slice of an auxiliary coded picture without partitioning +const SLICE_AUX = 19; + +/// Coded slice extension +const SLICE_EXT = 20; + +/// Coded slice extension for a depth view component or a 3D-AVC texture view component +const SLICE_LAYER_EXT = 21; + +// 22, 23 reserved + +List findNALUIndices(Uint8List stream) { + var result = []; + var start = 0, pos = 0, searchLength = stream.length - 2; + while (pos < searchLength) { + // skip until end of current NALU + while (pos < searchLength && + !(stream[pos] == 0 && stream[pos + 1] == 0 && stream[pos + 2] == 1)) { + pos++; + } + if (pos >= searchLength) pos = stream.length; + // remove trailing zeros from current NALU + var end = pos; + while (end > start && stream[end - 1] == 0) { + end--; + } + // save current NALU + if (start == 0) { + if (end != start) throw Exception('byte stream contains leading data'); + } else { + result.add(start); + } + // begin new NALU + start = pos = pos + 3; + } + return result; +} + +int parseNALUType(int startByte) { + return startByte & kNaluTypeMask; +} + +enum CryptorError { + kNew, + kOk, + kDecryptError, + kEncryptError, + kUnsupportedCodec, + kMissingKey, + kKeyRatcheted, + kInternalError, + kDisposed, +} + +const KEYRING_SIZE = 16; + +class KeySet { + KeySet(this.material, this.encryptionKey); + CryptoKey material; + CryptoKey encryptionKey; +} + +class FrameCryptor { + FrameCryptor( + {required this.worker, + required this.participantId, + required this.trackId, + required this.keyOptions}); + Map sendCounts = {}; + String? participantId; + String? trackId; + String? codec; + final KeyOptions keyOptions; + late String kind; + bool enabled = false; + CryptorError lastError = CryptorError.kNew; + final DedicatedWorkerGlobalScope worker; + int currentKeyIndex = 0; + + Completer? _ratchetCompleter; + + List cryptoKeyRing = List.filled(KEYRING_SIZE, null); + + Future ratchetKey(int? keyIndex) async { + if (_ratchetCompleter == null) { + _ratchetCompleter = Completer(); + var currentMaterial = getKeySet(keyIndex)?.material; + if (currentMaterial == null) { + _ratchetCompleter!.complete(); + _ratchetCompleter = null; + return; + } + ratchetMaterial(currentMaterial).then((newMaterial) { + deriveKeys(newMaterial, keyOptions.ratchetSalt).then((newKeySet) { + setKeySetFromMaterial(newKeySet, keyIndex ?? currentKeyIndex) + .then((_) { + _ratchetCompleter!.complete(); + _ratchetCompleter = null; + }); + }); + }); + } + + return _ratchetCompleter!.future; + } + + Future ratchetMaterial(CryptoKey currentMaterial) async { + var newMaterial = await jsutil.promiseToFuture(crypto.importKey( + 'raw', + crypto.jsArrayBufferFrom( + await ratchet(currentMaterial, keyOptions.ratchetSalt)), + (currentMaterial.algorithm as crypto.Algorithm).name, + false, + ['deriveBits', 'deriveKey'], + )); + return newMaterial; + } + + KeySet? getKeySet(int? keyIndex) { + return cryptoKeyRing[keyIndex ?? currentKeyIndex]; + } + + void setParticipantId(String participantId) { + if (lastError != CryptorError.kOk) { + print( + 'setParticipantId: lastError != CryptorError.kOk, reset state to kNew'); + lastError = CryptorError.kNew; + } + this.participantId = participantId; + } + + void setKeyIndex(int keyIndex) { + if (lastError != CryptorError.kOk) { + print('setKeyIndex: lastError != CryptorError.kOk, reset state to kNew'); + lastError = CryptorError.kNew; + } + currentKeyIndex = keyIndex; + } + + void setEnabled(bool enabled) { + if (lastError != CryptorError.kOk) { + print( + 'setEnabled[$enabled]: lastError != CryptorError.kOk, reset state to kNew'); + lastError = CryptorError.kNew; + } + this.enabled = enabled; + } + + Future setKey(int keyIndex, Uint8List key) async { + if (lastError != CryptorError.kOk) { + print('setKey: lastError != CryptorError.kOk, reset state to kNew'); + lastError = CryptorError.kNew; + } + var keyMaterial = await crypto.impportKeyFromRawData(key, + webCryptoAlgorithm: 'PBKDF2', keyUsages: ['deriveBits', 'deriveKey']); + var keySet = await deriveKeys( + keyMaterial, + keyOptions.ratchetSalt, + ); + await setKeySetFromMaterial(keySet, keyIndex); + } + + Future setKeySetFromMaterial(KeySet keySet, int keyIndex) async { + print('setting new key'); + if (keyIndex >= 0) { + currentKeyIndex = keyIndex % cryptoKeyRing.length; + } + cryptoKeyRing[currentKeyIndex] = keySet; + } + + /// Derives a set of keys from the master key. + /// See https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.1 + Future deriveKeys(CryptoKey material, Uint8List salt) async { + var algorithmOptions = + getAlgoOptions((material.algorithm as crypto.Algorithm).name, salt); + + // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey#HKDF + // https://developer.mozilla.org/en-US/docs/Web/API/HkdfParams + var encryptionKey = + await jsutil.promiseToFuture(crypto.deriveKey( + jsutil.jsify(algorithmOptions), + material, + jsutil.jsify({'name': 'AES-GCM', 'length': 128}), + false, + ['encrypt', 'decrypt'], + )); + + return KeySet(material, encryptionKey); + } + + /// Ratchets a key. See + /// https://tools.ietf.org/html/draft-omara-sframe-00#section-4.3.5.1 + + Future ratchet(CryptoKey material, Uint8List salt) async { + var algorithmOptions = getAlgoOptions('PBKDF2', salt); + + // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveBits + var newKey = await jsutil.promiseToFuture( + crypto.deriveBits(jsutil.jsify(algorithmOptions), material, 256)); + return newKey.asUint8List(); + } + + void updateCodec(String codec) { + if (lastError != CryptorError.kOk) { + print( + 'updateCodec[$codec]: lastError != CryptorError.kOk, reset state to kNew'); + lastError = CryptorError.kNew; + } + this.codec = codec; + } + + Uint8List makeIv( + {required int synchronizationSource, required int timestamp}) { + var iv = ByteData(IV_LENGTH); + + // having to keep our own send count (similar to a picture id) is not ideal. + if (sendCounts[synchronizationSource] == null) { + // Initialize with a random offset, similar to the RTP sequence number. + sendCounts[synchronizationSource] = Random.secure().nextInt(0xffff); + } + + var sendCount = sendCounts[synchronizationSource] ?? 0; + + iv.setUint32(0, synchronizationSource); + iv.setUint32(4, timestamp); + iv.setUint32(8, timestamp - (sendCount % 0xffff)); + + sendCounts[synchronizationSource] = sendCount + 1; + + return iv.buffer.asUint8List(); + } + + void postMessage(Object message) { + worker.postMessage(message); + } + + Future setupTransform({ + required String operation, + required ReadableStream readable, + required WritableStream writable, + required String trackId, + required String kind, + String? codec, + }) async { + print('setupTransform $operation'); + this.kind = kind; + if (codec != null) { + print('setting codec on cryptor to $codec'); + this.codec = codec; + } + var transformer = TransformStream(jsutil.jsify({ + 'transform': + allowInterop(operation == 'encode' ? encodeFunction : decodeFunction) + })); + try { + readable.pipeThrough(transformer).pipeTo(writable); + } catch (e) { + print('e ${e.toString()}'); + if (lastError != CryptorError.kInternalError) { + lastError = CryptorError.kInternalError; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'state': 'internalError', + 'error': 'Internal error: ${e.toString()}' + }); + } + } + this.trackId = trackId; + } + + int getUnencryptedBytes(RTCEncodedFrame frame, String? codec) { + if (codec != null && codec.toLowerCase() == 'h264') { + var data = frame.data.asUint8List(); + var naluIndices = findNALUIndices(data); + for (var index in naluIndices) { + var type = parseNALUType(data[index]); + switch (type) { + case SLICE_IDR: + case SLICE_NON_IDR: + // skipping + //print('unEncryptedBytes NALU of type $type, offset ${index + 2}'); + return index + 2; + default: + //print('skipping NALU of type $type'); + break; + } + } + throw Exception('Could not find NALU'); + } + switch (frame.type) { + case 'key': + return 10; + case 'delta': + return 3; + case 'audio': + return 1; // frame.type is not set on audio, so this is set manually + default: + return 0; + } + } + + Future encodeFunction( + RTCEncodedFrame frame, + TransformStreamDefaultController controller, + ) async { + var buffer = frame.data.asUint8List(); + + if (!enabled || + // skip for encryption for empty dtx frames + buffer.isEmpty) { + controller.enqueue(frame); + return; + } + + var secretKey = getKeySet(currentKeyIndex)?.encryptionKey; + var keyIndex = currentKeyIndex; + + if (secretKey == null) { + if (lastError != CryptorError.kMissingKey) { + lastError = CryptorError.kMissingKey; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'missingKey', + 'error': 'Missing key for track $trackId', + }); + } + return; + } + + try { + var headerLength = + kind == 'video' ? getUnencryptedBytes(frame, codec) : 1; + var metaData = frame.getMetadata(); + var iv = makeIv( + synchronizationSource: metaData.synchronizationSource, + timestamp: frame.timestamp); + + var frameTrailer = ByteData(2); + frameTrailer.setInt8(0, IV_LENGTH); + frameTrailer.setInt8(1, keyIndex); + + var cipherText = await jsutil.promiseToFuture(crypto.encrypt( + crypto.AesGcmParams( + name: 'AES-GCM', + iv: crypto.jsArrayBufferFrom(iv), + additionalData: + crypto.jsArrayBufferFrom(buffer.sublist(0, headerLength)), + ), + secretKey, + crypto.jsArrayBufferFrom(buffer.sublist(headerLength, buffer.length)), + )); + + //print( + // 'buffer: ${buffer.length}, cipherText: ${cipherText.asUint8List().length}'); + var finalBuffer = BytesBuilder(); + + finalBuffer.add(Uint8List.fromList(buffer.sublist(0, headerLength))); + finalBuffer.add(cipherText.asUint8List()); + finalBuffer.add(iv); + finalBuffer.add(frameTrailer.buffer.asUint8List()); + frame.data = crypto.jsArrayBufferFrom(finalBuffer.toBytes()); + + controller.enqueue(frame); + + if (lastError != CryptorError.kOk) { + lastError = CryptorError.kOk; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'ok', + 'error': 'encryption ok' + }); + } + + //print( + // 'encrypto kind $kind,codec $codec headerLength: $headerLength, timestamp: ${frame.timestamp}, ssrc: ${metaData.synchronizationSource}, data length: ${buffer.length}, encrypted length: ${finalBuffer.toBytes().length}, key ${secretKey.toString()} , iv $iv'); + } catch (e) { + //print('encrypt: e ${e.toString()}'); + if (lastError != CryptorError.kEncryptError) { + lastError = CryptorError.kEncryptError; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'encryptError', + 'error': e.toString() + }); + } + } + } + + Future decodeFunction( + RTCEncodedFrame frame, + TransformStreamDefaultController controller, + ) async { + var ratchetCount = 0; + var buffer = frame.data.asUint8List(); + ByteBuffer? decrypted; + KeySet? initialKeySet; + int initialKeyIndex = currentKeyIndex; + + if (!enabled || + // skip for encryption for empty dtx frames + buffer.isEmpty) { + controller.enqueue(frame); + return; + } + + if (keyOptions.uncryptedMagicBytes != null) { + var magicBytes = keyOptions.uncryptedMagicBytes!; + if (buffer.length >= magicBytes.length + 1) { + var magicBytesBuffer = buffer.sublist( + buffer.length - (magicBytes.length + 1), magicBytes.length); + if (magicBytesBuffer.toString() == magicBytes.toString()) { + var finalBuffer = BytesBuilder(); + finalBuffer.add(Uint8List.fromList( + buffer.sublist(0, buffer.length - (magicBytes.length + 1)))); + frame.data = crypto.jsArrayBufferFrom(finalBuffer.toBytes()); + controller.enqueue(frame); + return; + } + } + } + + try { + var headerLength = + kind == 'video' ? getUnencryptedBytes(frame, codec) : 1; + var metaData = frame.getMetadata(); + + var frameTrailer = buffer.sublist(buffer.length - 2); + var ivLength = frameTrailer[0]; + var keyIndex = frameTrailer[1]; + var iv = buffer.sublist(buffer.length - ivLength - 2, buffer.length - 2); + + var initialKeySet = getKeySet(keyIndex); + initialKeyIndex = keyIndex; + + if (initialKeySet == null) { + if (lastError != CryptorError.kMissingKey) { + lastError = CryptorError.kMissingKey; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'missingKey', + 'error': 'Missing key for track $trackId' + }); + } + controller.enqueue(frame); + return; + } + bool endDecLoop = false; + var currentkeySet = initialKeySet; + while (!endDecLoop) { + try { + decrypted = await jsutil.promiseToFuture(crypto.decrypt( + crypto.AesGcmParams( + name: 'AES-GCM', + iv: crypto.jsArrayBufferFrom(iv), + additionalData: + crypto.jsArrayBufferFrom(buffer.sublist(0, headerLength)), + ), + currentkeySet.encryptionKey, + crypto.jsArrayBufferFrom( + buffer.sublist(headerLength, buffer.length - ivLength - 2)), + )); + + if (decrypted != null && currentkeySet != initialKeySet) { + await setKeySetFromMaterial(currentkeySet, initialKeyIndex); + } + + endDecLoop = true; + + if (lastError != CryptorError.kOk && + lastError != CryptorError.kKeyRatcheted && + ratchetCount > 0) { + print( + 'KeyRatcheted: ssrc ${metaData.synchronizationSource} timestamp ${frame.timestamp} ratchetCount $ratchetCount participantId: $participantId'); + print( + 'ratchetKey: lastError != CryptorError.kKeyRatcheted, reset state to kKeyRatcheted'); + + lastError = CryptorError.kKeyRatcheted; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'keyRatcheted', + 'error': 'Key ratcheted ok' + }); + } + } catch (e) { + lastError = CryptorError.kInternalError; + endDecLoop = ratchetCount >= keyOptions.ratchetWindowSize || + keyOptions.ratchetWindowSize <= 0; + if (endDecLoop) { + rethrow; + } + var newMaterial = await ratchetMaterial(currentkeySet.material); + currentkeySet = await deriveKeys(newMaterial, keyOptions.ratchetSalt); + ratchetCount++; + } + } + + //print( + // 'buffer: ${buffer.length}, decrypted: ${decrypted.asUint8List().length}'); + var finalBuffer = BytesBuilder(); + + finalBuffer.add(Uint8List.fromList(buffer.sublist(0, headerLength))); + finalBuffer.add(decrypted!.asUint8List()); + frame.data = crypto.jsArrayBufferFrom(finalBuffer.toBytes()); + controller.enqueue(frame); + + if (lastError != CryptorError.kOk) { + lastError = CryptorError.kOk; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'ok', + 'error': 'decryption ok' + }); + } + + //print( + // 'decrypto kind $kind,codec $codec headerLength: $headerLength, timestamp: ${frame.timestamp}, ssrc: ${metaData.synchronizationSource}, data length: ${buffer.length}, decrypted length: ${finalBuffer.toBytes().length}, key ${secretKey.toString()}, keyindex $keyIndex iv $iv'); + } catch (e) { + if (lastError != CryptorError.kDecryptError) { + lastError = CryptorError.kDecryptError; + postMessage({ + 'type': 'cryptorState', + 'participantId': participantId, + 'trackId': trackId, + 'kind': kind, + 'state': 'decryptError', + 'error': e.toString() + }); + } + + /// Since the key it is first send and only afterwards actually used for encrypting, there were + /// situations when the decrypting failed due to the fact that the received frame was not encrypted + /// yet and ratcheting, of course, did not solve the problem. So if we fail RATCHET_WINDOW_SIZE times, + /// we come back to the initial key. + if (initialKeySet != null) { + await setKeySetFromMaterial(initialKeySet, initialKeyIndex); + } + } + } +} diff --git a/web/e2ee.utils.dart b/web/e2ee.utils.dart new file mode 100644 index 0000000..a2b6bfe --- /dev/null +++ b/web/e2ee.utils.dart @@ -0,0 +1,66 @@ +import 'dart:html'; +import 'dart:js' as js; +import 'dart:js_util'; +import 'dart:typed_data'; + +import 'crypto.dart' as crypto; + +bool isE2EESupported() { + return isInsertableStreamSupported() || isScriptTransformSupported(); +} + +bool isScriptTransformSupported() { + return js.context['RTCRtpScriptTransform'] != null; +} + +bool isInsertableStreamSupported() { + return js.context['RTCRtpSender'] != null && + js.context['RTCRtpSender']['prototype']['createEncodedStreams'] != null; +} + +Future importKey( + Uint8List keyBytes, String algorithm, String usage) { + // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey + return promiseToFuture(crypto.importKey( + 'raw', + crypto.jsArrayBufferFrom(keyBytes), + js.JsObject.jsify({'name': algorithm}), + false, + usage == 'derive' ? ['deriveBits', 'deriveKey'] : ['encrypt', 'decrypt'], + )); +} + +Future createKeyMaterialFromString( + Uint8List keyBytes, String algorithm, String usage) { + // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/importKey + return promiseToFuture(crypto.importKey( + 'raw', + crypto.jsArrayBufferFrom(keyBytes), + js.JsObject.jsify({'name': 'PBKDF2'}), + false, + ['deriveBits', 'deriveKey'], + )); +} + +dynamic getAlgoOptions(String algorithmName, Uint8List salt) { + switch (algorithmName) { + case 'HKDF': + return { + 'name': 'HKDF', + 'salt': crypto.jsArrayBufferFrom(salt), + 'hash': 'SHA-256', + 'info': crypto.jsArrayBufferFrom(Uint8List(128)), + }; + case 'PBKDF2': + { + return { + 'name': 'PBKDF2', + 'salt': crypto.jsArrayBufferFrom(salt), + 'hash': 'SHA-256', + 'iterations': 100000, + }; + } + default: + throw Exception('algorithm $algorithmName is currently unsupported'); + } +} diff --git a/web/e2ee.worker.dart b/web/e2ee.worker.dart new file mode 100644 index 0000000..85624b2 --- /dev/null +++ b/web/e2ee.worker.dart @@ -0,0 +1,281 @@ +import 'dart:convert'; +import 'dart:html' as html; +import 'dart:js_util' as js_util; +import 'dart:typed_data'; +import 'package:js/js.dart'; + +import 'e2ee.cryptor.dart'; + +import 'package:flutter_webrtc/src/web/rtc_transform_stream.dart'; +import 'package:collection/collection.dart'; + +import 'crypto.dart' as crypto; + +@JS() +abstract class TransformMessage { + external String get msgType; + external String get kind; +} + +@anonymous +@JS() +class EnableTransformMessage { + external factory EnableTransformMessage({ + ReadableStream readable, + WritableStream writable, + String msgType, + String kind, + String participantId, + String trackId, + String codec, + }); + external ReadableStream get readable; + external WritableStream get writable; + external String get msgType; // 'encode' or 'decode' + external String get participantId; + external String get trackId; + external String get kind; + external String get codec; +} + +@anonymous +@JS() +class RemoveTransformMessage { + external factory RemoveTransformMessage( + {String msgType, String participantId, String trackId}); + external String get msgType; // 'removeTransform' + external String get participantId; + external String get trackId; +} + +@JS('self') +external html.DedicatedWorkerGlobalScope get self; + +extension PropsRTCTransformEventHandler on html.DedicatedWorkerGlobalScope { + set onrtctransform(Function(dynamic) callback) => + js_util.setProperty(this, 'onrtctransform', callback); +} + +var participantCryptors = []; +var publisherKeys = {}; +bool isEncryptionEnabled = false; + +KeyOptions keyProviderOptions = KeyOptions( + sharedKey: true, + ratchetSalt: Uint8List.fromList('ratchetSalt'.codeUnits), + ratchetWindowSize: 16); + +void main() async { + print('E2EE Worker created'); + + if (js_util.getProperty(self, 'RTCTransformEvent') != null) { + print('setup transform event handler'); + self.onrtctransform = allowInterop((event) { + print('got transform event'); + var transformer = (event as RTCTransformEvent).transformer; + transformer.handled = true; + var options = transformer.options; + var kind = options.kind; + var participantId = options.participantId; + var trackId = options.trackId; + var codec = options.codec; + var msgType = options.msgType; + + var cryptor = + participantCryptors.firstWhereOrNull((c) => c.trackId == trackId); + + if (cryptor == null) { + cryptor = FrameCryptor( + worker: self, + participantId: participantId, + trackId: trackId, + keyOptions: keyProviderOptions, + ); + participantCryptors.add(cryptor); + } + + cryptor.setupTransform( + operation: msgType, + readable: transformer.readable, + writable: transformer.writable, + trackId: trackId, + kind: kind, + codec: codec); + }); + } + + self.onMessage.listen((e) { + var msg = e.data; + var msgType = msg['msgType']; + switch (msgType) { + case 'init': + var options = msg['keyOptions']; + keyProviderOptions = KeyOptions( + sharedKey: options['sharedKey'], + ratchetSalt: Uint8List.fromList( + base64Decode(options['ratchetSalt'] as String)), + ratchetWindowSize: options['ratchetWindowSize'], + uncryptedMagicBytes: options['ratchetSalt'] != null + ? Uint8List.fromList( + base64Decode(options['uncryptedMagicBytes'] as String)) + : null); + print('worker: init with keyOptions ${keyProviderOptions.toString()}'); + break; + case 'enable': + { + var enabled = msg['enabled'] as bool; + var participantId = msg['participantId'] as String; + print('worker: set enable $enabled for participantId $participantId'); + var cryptors = participantCryptors + .where((c) => c.participantId == participantId) + .toList(); + for (var cryptor in cryptors) { + cryptor.setEnabled(enabled); + } + self.postMessage({ + 'type': 'cryptorEnabled', + 'participantId': participantId, + 'enable': enabled, + }); + } + break; + case 'decode': + case 'encode': + { + var kind = msg['kind']; + var exist = msg['exist'] as bool; + var participantId = msg['participantId'] as String; + var trackId = msg['trackId']; + var readable = msg['readableStream'] as ReadableStream; + var writable = msg['writableStream'] as WritableStream; + + print( + 'worker: got $msgType, kind $kind, trackId $trackId, participantId $participantId, ${readable.runtimeType} ${writable.runtimeType}}'); + var cryptor = + participantCryptors.firstWhereOrNull((c) => c.trackId == trackId); + + if (cryptor == null) { + cryptor = FrameCryptor( + worker: self, + participantId: participantId, + trackId: trackId, + keyOptions: keyProviderOptions); + participantCryptors.add(cryptor); + } + + if (!exist) { + cryptor.setupTransform( + operation: msgType, + readable: readable, + writable: writable, + trackId: trackId, + kind: kind); + } + cryptor.setParticipantId(participantId); + self.postMessage({ + 'type': 'cryptorSetup', + 'participantId': participantId, + 'trackId': trackId, + 'exist': exist, + 'operation': msgType, + }); + cryptor.lastError = CryptorError.kNew; + } + break; + case 'removeTransform': + { + var trackId = msg['trackId'] as String; + print('worker: removing trackId $trackId'); + participantCryptors.removeWhere((c) => c.trackId == trackId); + } + break; + case 'setKey': + { + var key = Uint8List.fromList(base64Decode(msg['key'] as String)); + var keyIndex = msg['keyIndex']; + //print('worker: got setKey ${msg['key']}, key $key'); + var participantId = msg['participantId'] as String; + print('worker: setup key for participant $participantId'); + + if (keyProviderOptions.sharedKey) { + for (var c in participantCryptors) { + c.setKey(keyIndex, key); + } + return; + } + var cryptors = participantCryptors + .where((c) => c.participantId == participantId) + .toList(); + for (var c in cryptors) { + c.setKey(keyIndex, key); + } + } + break; + case 'ratchetKey': + { + var keyIndex = msg['keyIndex']; + var participantId = msg['participantId'] as String; + print( + 'worker: ratchetKey for participant $participantId, keyIndex $keyIndex'); + var cryptors = participantCryptors + .where((c) => c.participantId == participantId) + .toList(); + for (var c in cryptors) { + var keySet = c.getKeySet(keyIndex); + c.ratchetKey(keyIndex).then((_) async { + var newKey = await c.ratchet( + keySet!.material, keyProviderOptions.ratchetSalt); + self.postMessage({ + 'type': 'ratchetKey', + 'participantId': participantId, + 'trackId': c.trackId, + 'key': base64Encode(newKey), + }); + }); + } + } + break; + case 'setKeyIndex': + { + var keyIndex = msg['index']; + var participantId = msg['participantId'] as String; + print('worker: setup key index for participant $participantId'); + var cryptors = participantCryptors + .where((c) => c.participantId == participantId) + .toList(); + for (var c in cryptors) { + c.setKeyIndex(keyIndex); + } + } + break; + case 'updateCodec': + { + var codec = msg['codec'] as String; + var trackId = msg['trackId'] as String; + print('worker: update codec for trackId $trackId, codec $codec'); + var cryptor = + participantCryptors.firstWhereOrNull((c) => c.trackId == trackId); + cryptor?.updateCodec(codec); + } + break; + case 'dispose': + { + var trackId = msg['trackId'] as String; + print('worker: dispose trackId $trackId'); + var cryptor = + participantCryptors.firstWhereOrNull((c) => c.trackId == trackId); + if (cryptor != null) { + cryptor.lastError = CryptorError.kDisposed; + self.postMessage({ + 'type': 'cryptorDispose', + 'participantId': cryptor.participantId, + 'trackId': trackId, + }); + } + } + break; + default: + print('worker: unknown message kind $msg'); + } + }); +}