var async; (function(exports) { 'use strict'; // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic function _invokeErrorHandler(errorHandler, error, stackTrace) { if (dart.is(errorHandler, ZoneBinaryCallback)) { return dart.dinvokef(errorHandler, error, stackTrace); } else { return dart.dinvokef(errorHandler, error); } } // Function _registerErrorHandler: (Function, Zone) → Function function _registerErrorHandler(errorHandler, zone) { if (dart.is(errorHandler, ZoneBinaryCallback)) { return zone.registerBinaryCallback(errorHandler); } else { return zone.registerUnaryCallback(dart.as(errorHandler, dart.throw_("Unimplemented type (dynamic) → dynamic"))); } } let _getBestStackTrace = Symbol('_getBestStackTrace'); class AsyncError extends core.Object { AsyncError(error, stackTrace) { this.error = error; this.stackTrace = stackTrace; } toString() { return dart.as(dart.dinvoke(this.error, 'toString'), core.String); } } AsyncError[dart.implements] = () => [core.Error]; class _UncaughtAsyncError extends AsyncError { _UncaughtAsyncError(error, stackTrace) { super.AsyncError(error, _UncaughtAsyncError[_getBestStackTrace](error, stackTrace)); } static [_getBestStackTrace](error, stackTrace) { if (stackTrace != null) return stackTrace; if (dart.is(error, core.Error)) { return dart.as(dart.dload(error, 'stackTrace'), core.StackTrace); } return null; } toString() { let result = `Uncaught Error: ${this.error}`; if (this.stackTrace != null) { result = `\nStack Trace:\n${this.stackTrace}`; } return result; } } let _controller = Symbol('_controller'); let _createSubscription = Symbol('_createSubscription'); let _subscribe = Symbol('_subscribe'); let _onListen = Symbol('_onListen'); let _add = Symbol('_add'); let _closeUnchecked = Symbol('_closeUnchecked'); let _addError = Symbol('_addError'); let _completeError = Symbol('_completeError'); let _complete = Symbol('_complete'); let _sink = Symbol('_sink'); let Stream$ = dart.generic(function(T) { class Stream extends core.Object { Stream() { } fromFuture(future) { let controller = new (StreamController$(T))({sync: true}); future.then(dart.as((value) => { controller[_add](dart.as(value, T)); controller[_closeUnchecked](); }, dart.throw_("Unimplemented type (T) → dynamic")), { onError: (error, stackTrace) => { controller[_addError](error, dart.as(stackTrace, core.StackTrace)); controller[_closeUnchecked](); } }); return controller.stream; } fromIterable(data) { return new (_GeneratedStreamImpl$(T))(() => new (_IterablePendingEvents$(T))(data)); } periodic(period, computation) { if (computation === void 0) computation = null; if (computation == null) computation = dart.as((i) => null, dart.throw_("Unimplemented type (int) → T")); let timer = null; let computationCount = 0; let controller = null; let watch = new core.Stopwatch(); // Function sendEvent: () → void function sendEvent() { watch.reset(); let data = computation(((x) => computationCount = dart.notNull(x) + 1, x)(computationCount)); controller.add(data); } // Function startPeriodicTimer: () → void function startPeriodicTimer() { dart.assert(timer == null); timer = new Timer.periodic(period, (timer) => { sendEvent(); }); } controller = new (StreamController$(T))({ sync: true, onListen: () => { watch.start(); startPeriodicTimer(); }, onPause: () => { timer.cancel(); timer = null; watch.stop(); }, onResume: () => { dart.assert(timer == null); let elapsed = watch.elapsed; watch.start(); timer = new Timer(period['-'](elapsed), () => { timer = null; startPeriodicTimer(); sendEvent(); }); }, onCancel: () => { if (timer != null) timer.cancel(); timer = null; } }); return controller.stream; } eventTransformed(source, mapSink) { return dart.as(new _BoundSinkStream(source, dart.as(mapSink, _SinkMapper)), Stream$(T)); } get isBroadcast() { return false; } asBroadcastStream(opts) { let onListen = opts && 'onListen' in opts ? opts.onListen : null; let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null; return new (_AsBroadcastStream$(T))(this, dart.as(onListen, dart.throw_("Unimplemented type (StreamSubscription) → void")), dart.as(onCancel, dart.throw_("Unimplemented type (StreamSubscription) → void"))); } where(test) { return new (_WhereStream$(T))(this, test); } map(convert) { return new (_MapStream$(T, dynamic))(this, convert); } asyncMap(convert) { let controller = null; let subscription = null; // Function onListen: () → void function onListen() { let add = controller.add; dart.assert(dart.notNull(dart.is(controller, _StreamController)) || dart.notNull(dart.is(controller, _BroadcastStreamController))); let eventSink = controller; let addError = eventSink[_addError]; subscription = this.listen((event) => { let newValue = null; try { newValue = convert(event); } catch (e) { let s = dart.stackTrace(e); controller.addError(e, s); return; } if (dart.is(newValue, Future)) { subscription.pause(); dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addError}), 'whenComplete', subscription.resume); } else { controller.add(newValue); } }, {onError: dart.as(addError, core.Function), onDone: controller.close}); } if (this.isBroadcast) { controller = new StreamController.broadcast({ onListen: onListen, onCancel: () => { subscription.cancel(); }, sync: true }); } else { controller = new StreamController({ onListen: onListen, onPause: () => { subscription.pause(); }, onResume: () => { subscription.resume(); }, onCancel: () => { subscription.cancel(); }, sync: true }); } return controller.stream; } asyncExpand(convert) { let controller = null; let subscription = null; // Function onListen: () → void function onListen() { dart.assert(dart.notNull(dart.is(controller, _StreamController)) || dart.notNull(dart.is(controller, _BroadcastStreamController))); let eventSink = controller; subscription = this.listen((event) => { let newStream = null; try { newStream = convert(event); } catch (e) { let s = dart.stackTrace(e); controller.addError(e, s); return; } if (newStream != null) { subscription.pause(); controller.addStream(newStream).whenComplete(subscription.resume); } }, {onError: dart.as(eventSink[_addError], core.Function), onDone: controller.close}); } if (this.isBroadcast) { controller = new StreamController.broadcast({ onListen: onListen, onCancel: () => { subscription.cancel(); }, sync: true }); } else { controller = new StreamController({ onListen: onListen, onPause: () => { subscription.pause(); }, onResume: () => { subscription.resume(); }, onCancel: () => { subscription.cancel(); }, sync: true }); } return controller.stream; } handleError(onError, opts) { let test = opts && 'test' in opts ? opts.test : null; return new (_HandleErrorStream$(T))(this, onError, test); } expand(convert) { return new (_ExpandStream$(T, dynamic))(this, convert); } pipe(streamConsumer) { return streamConsumer.addStream(this).then((_) => streamConsumer.close()); } transform(streamTransformer) { return streamTransformer.bind(this); } reduce(combine) { let result = new (_Future$(T))(); let seenFirst = false; let value = null; let subscription = null; subscription = this.listen((element) => { if (seenFirst) { _runUserCode(() => combine(value, element), (newValue) => { value = newValue; }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); } else { value = element; seenFirst = true; } }, { onError: result[_completeError], onDone: () => { if (!dart.notNull(seenFirst)) { try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(result, e, s); } } else { result[_complete](value); } }, cancelOnError: true }); return result; } fold(initialValue, combine) { let result = new _Future(); let value = initialValue; let subscription = null; subscription = this.listen((element) => { _runUserCode(() => dart.dinvokef(combine, value, element), (newValue) => { value = newValue; }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: (e, st) => { result[_completeError](e, dart.as(st, core.StackTrace)); }, onDone: () => { result[_complete](value); }, cancelOnError: true }); return result; } join(separator) { if (separator === void 0) separator = ""; let result = new (_Future$(core.String))(); let buffer = new core.StringBuffer(); let subscription = null; let first = true; subscription = this.listen((element) => { if (!dart.notNull(first)) { buffer.write(separator); } first = false; try { buffer.write(element); } catch (e) { let s = dart.stackTrace(e); _cancelAndErrorWithReplacement(subscription, result, e, s); } }, { onError: (e) => { result[_completeError](e); }, onDone: () => { result[_complete](buffer.toString()); }, cancelOnError: true }); return result; } contains(needle) { let future = new (_Future$(core.bool))(); let subscription = null; subscription = this.listen((element) => { _runUserCode(() => dart.equals(element, needle), (isMatch) => { if (isMatch) { _cancelAndValue(subscription, future, true); } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { future[_complete](false); }, cancelOnError: true }); return future; } forEach(action) { let future = new _Future(); let subscription = null; subscription = this.listen((element) => { _runUserCode(() => action(element), (_) => { }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { future[_complete](null); }, cancelOnError: true }); return future; } every(test) { let future = new (_Future$(core.bool))(); let subscription = null; subscription = this.listen((element) => { _runUserCode(() => test(element), (isMatch) => { if (!dart.notNull(isMatch)) { _cancelAndValue(subscription, future, false); } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { future[_complete](true); }, cancelOnError: true }); return future; } any(test) { let future = new (_Future$(core.bool))(); let subscription = null; subscription = this.listen((element) => { _runUserCode(() => test(element), (isMatch) => { if (isMatch) { _cancelAndValue(subscription, future, true); } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { future[_complete](false); }, cancelOnError: true }); return future; } get length() { let future = new (_Future$(core.int))(); let count = 0; this.listen(dart.as((_) => { count = dart.notNull(count) + 1; }, dart.throw_("Unimplemented type (T) → void")), { onError: future[_completeError], onDone: () => { future[_complete](count); }, cancelOnError: true }); return future; } get isEmpty() { let future = new (_Future$(core.bool))(); let subscription = null; subscription = this.listen(dart.as((_) => { _cancelAndValue(subscription, future, false); }, dart.throw_("Unimplemented type (T) → void")), { onError: future[_completeError], onDone: () => { future[_complete](true); }, cancelOnError: true }); return future; } toList() { let result = new core.List$(T).from([]); let future = new (_Future$(core.List$(T)))(); this.listen((data) => { result[core.$add](data); }, { onError: future[_completeError], onDone: () => { future[_complete](result); }, cancelOnError: true }); return future; } toSet() { let result = new (core.Set$(T))(); let future = new (_Future$(core.Set$(T)))(); this.listen((data) => { result.add(data); }, { onError: future[_completeError], onDone: () => { future[_complete](result); }, cancelOnError: true }); return future; } drain(futureValue) { if (futureValue === void 0) futureValue = null; return this.listen(null, {cancelOnError: true}).asFuture(futureValue); } take(count) { return dart.as(new _TakeStream(this, count), Stream$(T)); } takeWhile(test) { return dart.as(new _TakeWhileStream(this, test), Stream$(T)); } skip(count) { return dart.as(new _SkipStream(this, count), Stream$(T)); } skipWhile(test) { return dart.as(new _SkipWhileStream(this, test), Stream$(T)); } distinct(equals) { if (equals === void 0) equals = null; return dart.as(new _DistinctStream(this, equals), Stream$(T)); } get first() { let future = new (_Future$(T))(); let subscription = null; subscription = this.listen((value) => { _cancelAndValue(subscription, future, value); }, { onError: future[_completeError], onDone: () => { try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } get last() { let future = new (_Future$(T))(); let result = null; let foundResult = false; let subscription = null; subscription = this.listen((value) => { foundResult = true; result = value; }, { onError: future[_completeError], onDone: () => { if (foundResult) { future[_complete](result); return; } try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } get single() { let future = new (_Future$(T))(); let result = null; let foundResult = false; let subscription = null; subscription = this.listen((value) => { if (foundResult) { try { throw _internal.IterableElementError.tooMany(); } catch (e) { let s = dart.stackTrace(e); _cancelAndErrorWithReplacement(subscription, future, e, s); } return; } foundResult = true; result = value; }, { onError: future[_completeError], onDone: () => { if (foundResult) { future[_complete](result); return; } try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } firstWhere(test, opts) { let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null; let future = new _Future(); let subscription = null; subscription = this.listen((value) => { _runUserCode(() => test(value), (isMatch) => { if (isMatch) { _cancelAndValue(subscription, future, value); } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { if (defaultValue != null) { _runUserCode(defaultValue, future[_complete], future[_completeError]); return; } try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } lastWhere(test, opts) { let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : null; let future = new _Future(); let result = null; let foundResult = false; let subscription = null; subscription = this.listen((value) => { _runUserCode(() => true == test(value), (isMatch) => { if (isMatch) { foundResult = true; result = value; } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { if (foundResult) { future[_complete](result); return; } if (defaultValue != null) { _runUserCode(defaultValue, future[_complete], future[_completeError]); return; } try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } singleWhere(test) { let future = new (_Future$(T))(); let result = null; let foundResult = false; let subscription = null; subscription = this.listen((value) => { _runUserCode(() => true == test(value), (isMatch) => { if (isMatch) { if (foundResult) { try { throw _internal.IterableElementError.tooMany(); } catch (e) { let s = dart.stackTrace(e); _cancelAndErrorWithReplacement(subscription, future, e, s); } return; } foundResult = true; result = value; } }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_("Unimplemented type (dynamic, StackTrace) → dynamic"))); }, { onError: future[_completeError], onDone: () => { if (foundResult) { future[_complete](result); return; } try { throw _internal.IterableElementError.noElement(); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(future, e, s); } }, cancelOnError: true }); return future; } elementAt(index) { if (dart.notNull(!(typeof index == 'number')) || dart.notNull(index) < 0) throw new core.ArgumentError(index); let future = new (_Future$(T))(); let subscription = null; let elementIndex = 0; subscription = this.listen((value) => { if (index == elementIndex) { _cancelAndValue(subscription, future, value); return; } elementIndex = 1; }, { onError: future[_completeError], onDone: (() => { future[_completeError](new core.RangeError.index(index, this, "index", null, elementIndex)); }).bind(this), cancelOnError: true }); return future; } timeout(timeLimit, opts) { let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null; let controller = null; let subscription = null; let timer = null; let zone = null; let timeout = null; // Function onData: (T) → void function onData(event) { timer.cancel(); controller.add(event); timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unimplemented type () → void"))); } // Function onError: (dynamic, StackTrace) → void function onError(error, stackTrace) { timer.cancel(); dart.assert(dart.notNull(dart.is(controller, _StreamController)) || dart.notNull(dart.is(controller, _BroadcastStreamController))); let eventSink = controller; dart.dinvoke(eventSink, '_addError', error, stackTrace); timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unimplemented type () → void"))); } // Function onDone: () → void function onDone() { timer.cancel(); controller.close(); } // Function onListen: () → void function onListen() { zone = Zone.current; if (onTimeout == null) { timeout = () => { controller.addError(new TimeoutException("No stream event", timeLimit), null); }; } else { onTimeout = dart.as(zone.registerUnaryCallback(onTimeout), dart.throw_("Unimplemented type (EventSink) → void")); let wrapper = new _ControllerEventSinkWrapper(null); timeout = () => { wrapper[_sink] = controller; zone.runUnaryGuarded(onTimeout, wrapper); wrapper[_sink] = null; }; } subscription = this.listen(onData, {onError: onError, onDone: onDone}); timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unimplemented type () → void"))); } // Function onCancel: () → Future function onCancel() { timer.cancel(); let result = subscription.cancel(); subscription = null; return result; } controller = this.isBroadcast ? new _SyncBroadcastStreamController(onListen, onCancel) : new _SyncStreamController(onListen, () => { timer.cancel(); subscription.pause(); }, () => { subscription.resume(); timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unimplemented type () → void"))); }, onCancel); return controller.stream; } } dart.defineNamedConstructor(Stream, 'fromFuture'); dart.defineNamedConstructor(Stream, 'fromIterable'); dart.defineNamedConstructor(Stream, 'periodic'); dart.defineNamedConstructor(Stream, 'eventTransformed'); return Stream; }); let Stream = Stream$(); let _StreamImpl$ = dart.generic(function(T) { class _StreamImpl extends Stream$(T) { listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; cancelOnError = core.identical(true, cancelOnError); let subscription = this[_createSubscription](onData, onError, onDone, cancelOnError); this[_onListen](subscription); return dart.as(subscription, StreamSubscription$(T)); } [_createSubscription](onData, onError, onDone, cancelOnError) { return new (_BufferingStreamSubscription$(T))(onData, onError, onDone, cancelOnError); } [_onListen](subscription) {} } return _StreamImpl; }); let _StreamImpl = _StreamImpl$(); let _ControllerStream$ = dart.generic(function(T) { class _ControllerStream extends _StreamImpl$(T) { _ControllerStream(controller$) { this[_controller] = controller$; super._StreamImpl(); } [_createSubscription](onData, onError, onDone, cancelOnError) { return this[_controller][_subscribe](onData, onError, onDone, cancelOnError); } get hashCode() { return dart.notNull(this[_controller].hashCode) ^ 892482866; } ['=='](other) { if (core.identical(this, other)) return true; if (!dart.is(other, _ControllerStream)) return false; let otherStream = dart.as(other, _ControllerStream); return core.identical(otherStream[_controller], this[_controller]); } } return _ControllerStream; }); let _ControllerStream = _ControllerStream$(); let _BroadcastStream$ = dart.generic(function(T) { class _BroadcastStream extends _ControllerStream$(T) { _BroadcastStream(controller) { super._ControllerStream(dart.as(controller, _StreamControllerLifecycle$(T))); } get isBroadcast() { return true; } } return _BroadcastStream; }); let _BroadcastStream = _BroadcastStream$(); let _next = Symbol('_next'); let _previous = Symbol('_previous'); class _BroadcastSubscriptionLink extends core.Object { _BroadcastSubscriptionLink() { this[_next] = null; this[_previous] = null; } } let _eventState = Symbol('_eventState'); let _expectsEvent = Symbol('_expectsEvent'); let _STATE_EVENT_ID = Symbol('_STATE_EVENT_ID'); let _toggleEventId = Symbol('_toggleEventId'); let _isFiring = Symbol('_isFiring'); let _STATE_FIRING = Symbol('_STATE_FIRING'); let _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring'); let _STATE_REMOVE_AFTER_FIRING = Symbol('_STATE_REMOVE_AFTER_FIRING'); let _removeAfterFiring = Symbol('_removeAfterFiring'); let _onPause = Symbol('_onPause'); let _onResume = Symbol('_onResume'); let _onCancel = Symbol('_onCancel'); let _recordCancel = Symbol('_recordCancel'); let _recordPause = Symbol('_recordPause'); let _recordResume = Symbol('_recordResume'); let _zone = Symbol('_zone'); let _state = Symbol('_state'); let _STATE_CANCEL_ON_ERROR = Symbol('_STATE_CANCEL_ON_ERROR'); let _onData = Symbol('_onData'); let _onError = Symbol('_onError'); let _onDone = Symbol('_onDone'); let _cancelFuture = Symbol('_cancelFuture'); let _pending = Symbol('_pending'); let _setPendingEvents = Symbol('_setPendingEvents'); let _STATE_HAS_PENDING = Symbol('_STATE_HAS_PENDING'); let _extractPending = Symbol('_extractPending'); let _isCanceled = Symbol('_isCanceled'); let _isPaused = Symbol('_isPaused'); let _isInputPaused = Symbol('_isInputPaused'); let _STATE_PAUSE_COUNT = Symbol('_STATE_PAUSE_COUNT'); let _STATE_INPUT_PAUSED = Symbol('_STATE_INPUT_PAUSED'); let _inCallback = Symbol('_inCallback'); let _guardCallback = Symbol('_guardCallback'); let _decrementPauseCount = Symbol('_decrementPauseCount'); let _hasPending = Symbol('_hasPending'); let _mayResumeInput = Symbol('_mayResumeInput'); let _STATE_WAIT_FOR_CANCEL = Symbol('_STATE_WAIT_FOR_CANCEL'); let _cancel = Symbol('_cancel'); let _isClosed = Symbol('_isClosed'); let _STATE_CLOSED = Symbol('_STATE_CLOSED'); let _STATE_CANCELED = Symbol('_STATE_CANCELED'); let _waitsForCancel = Symbol('_waitsForCancel'); let _STATE_IN_CALLBACK = Symbol('_STATE_IN_CALLBACK'); let _canFire = Symbol('_canFire'); let _cancelOnError = Symbol('_cancelOnError'); let _incrementPauseCount = Symbol('_incrementPauseCount'); let _sendData = Symbol('_sendData'); let _addPending = Symbol('_addPending'); let _sendError = Symbol('_sendError'); let _close = Symbol('_close'); let _sendDone = Symbol('_sendDone'); let _checkState = Symbol('_checkState'); let _BufferingStreamSubscription$ = dart.generic(function(T) { class _BufferingStreamSubscription extends core.Object { _BufferingStreamSubscription(onData, onError, onDone, cancelOnError) { this[_zone] = Zone.current; this[_state] = cancelOnError ? _BufferingStreamSubscription[_STATE_CANCEL_ON_ERROR] : 0; this[_onData] = null; this[_onError] = null; this[_onDone] = null; this[_cancelFuture] = null; this[_pending] = null; this.onData(onData); this.onError(onError); this.onDone(onDone); } [_setPendingEvents](pendingEvents) { dart.assert(this[_pending] == null); if (pendingEvents == null) return; this[_pending] = pendingEvents; if (!dart.notNull(pendingEvents.isEmpty)) { this[_state] = _BufferingStreamSubscription[_STATE_HAS_PENDING]; this[_pending].schedule(this); } } [_extractPending]() { dart.assert(this[_isCanceled]); let events = this[_pending]; this[_pending] = null; return events; } onData(handleData) { if (handleData == null) handleData = dart.as(_nullDataHandler, dart.throw_("Unimplemented type (T) → void")); this[_onData] = dart.as(this[_zone].registerUnaryCallback(handleData), _DataHandler); } onError(handleError) { if (handleError == null) handleError = _nullErrorHandler; this[_onError] = _registerErrorHandler(handleError, this[_zone]); } onDone(handleDone) { if (handleDone == null) handleDone = _nullDoneHandler; this[_onDone] = this[_zone].registerCallback(handleDone); } pause(resumeSignal) { if (resumeSignal === void 0) resumeSignal = null; if (this[_isCanceled]) return; let wasPaused = this[_isPaused]; let wasInputPaused = this[_isInputPaused]; this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStreamSubscription[_STATE_PAUSE_COUNT]) | dart.notNull(_BufferingStreamSubscription[_STATE_INPUT_PAUSED]); if (resumeSignal != null) resumeSignal.whenComplete(this.resume); if (!dart.notNull(wasPaused) && dart.notNull(this[_pending] != null)) this[_pending].cancelSchedule(); if (!dart.notNull(wasInputPaused) && !dart.notNull(this[_inCallback])) this[_guardCallback](this[_onPause]); } resume() { if (this[_isCanceled]) return; if (this[_isPaused]) { this[_decrementPauseCount](); if (!dart.notNull(this[_isPaused])) { if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_pending].isEmpty)) { this[_pending].schedule(this); } else { dart.assert(this[_mayResumeInput]); this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_INPUT_PAUSED]); if (!dart.notNull(this[_inCallback])) this[_guardCallback](this[_onResume]); } } } } cancel() { this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_WAIT_FOR_CANCEL]); if (this[_isCanceled]) return this[_cancelFuture]; this[_cancel](); return this[_cancelFuture]; } asFuture(futureValue) { if (futureValue === void 0) futureValue = null; let result = new (_Future$(T))(); this[_onDone] = () => { result[_complete](futureValue); }; this[_onError] = ((error, stackTrace) => { this.cancel(); result[_completeError](error, dart.as(stackTrace, core.StackTrace)); }).bind(this); return result; } get [_isInputPaused]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_INPUT_PAUSED])) != 0; } get [_isClosed]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_CLOSED])) != 0; } get [_isCanceled]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_CANCELED])) != 0; } get [_waitsForCancel]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_WAIT_FOR_CANCEL])) != 0; } get [_inCallback]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK])) != 0; } get [_hasPending]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_HAS_PENDING])) != 0; } get [_isPaused]() { return dart.notNull(this[_state]) >= dart.notNull(_BufferingStreamSubscription[_STATE_PAUSE_COUNT]); } get [_canFire]() { return dart.notNull(this[_state]) < dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); } get [_mayResumeInput]() { return !dart.notNull(this[_isPaused]) && (dart.notNull(this[_pending] == null) || dart.notNull(this[_pending].isEmpty)); } get [_cancelOnError]() { return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscription[_STATE_CANCEL_ON_ERROR])) != 0; } get isPaused() { return this[_isPaused]; } [_cancel]() { this[_state] = _BufferingStreamSubscription[_STATE_CANCELED]; if (this[_hasPending]) { this[_pending].cancelSchedule(); } if (!dart.notNull(this[_inCallback])) this[_pending] = null; this[_cancelFuture] = this[_onCancel](); } [_incrementPauseCount]() { this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStreamSubscription[_STATE_PAUSE_COUNT]) | dart.notNull(_BufferingStreamSubscription[_STATE_INPUT_PAUSED]); } [_decrementPauseCount]() { dart.assert(this[_isPaused]); this[_state] = _BufferingStreamSubscription[_STATE_PAUSE_COUNT]; } [_add](data) { dart.assert(!dart.notNull(this[_isClosed])); if (this[_isCanceled]) return; if (this[_canFire]) { this[_sendData](data); } else { this[_addPending](new _DelayedData(data)); } } [_addError](error, stackTrace) { if (this[_isCanceled]) return; if (this[_canFire]) { this[_sendError](error, stackTrace); } else { this[_addPending](new _DelayedError(error, stackTrace)); } } [_close]() { dart.assert(!dart.notNull(this[_isClosed])); if (this[_isCanceled]) return; this[_state] = _BufferingStreamSubscription[_STATE_CLOSED]; if (this[_canFire]) { this[_sendDone](); } else { this[_addPending](new _DelayedDone()); } } [_onPause]() { dart.assert(this[_isInputPaused]); } [_onResume]() { dart.assert(!dart.notNull(this[_isInputPaused])); } [_onCancel]() { dart.assert(this[_isCanceled]); return null; } [_addPending](event) { let pending = dart.as(this[_pending], _StreamImplEvents); if (this[_pending] == null) pending = this[_pending] = new _StreamImplEvents(); pending.add(event); if (!dart.notNull(this[_hasPending])) { this[_state] = _BufferingStreamSubscription[_STATE_HAS_PENDING]; if (!dart.notNull(this[_isPaused])) { this[_pending].schedule(this); } } } [_sendData](data) { dart.assert(!dart.notNull(this[_isCanceled])); dart.assert(!dart.notNull(this[_isPaused])); dart.assert(!dart.notNull(this[_inCallback])); let wasInputPaused = this[_isInputPaused]; this[_state] = _BufferingStreamSubscription[_STATE_IN_CALLBACK]; this[_zone].runUnaryGuarded(this[_onData], data); this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); this[_checkState](wasInputPaused); } [_sendError](error, stackTrace) { dart.assert(!dart.notNull(this[_isCanceled])); dart.assert(!dart.notNull(this[_isPaused])); dart.assert(!dart.notNull(this[_inCallback])); let wasInputPaused = this[_isInputPaused]; // Function sendError: () → void function sendError() { if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCancel])) return; this[_state] = _BufferingStreamSubscription[_STATE_IN_CALLBACK]; if (dart.is(this[_onError], ZoneBinaryCallback)) { this[_zone].runBinaryGuarded(dart.as(this[_onError], dart.throw_("Unimplemented type (dynamic, dynamic) → dynamic")), error, stackTrace); } else { this[_zone].runUnaryGuarded(dart.as(this[_onError], dart.throw_("Unimplemented type (dynamic) → dynamic")), error); } this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); } if (this[_cancelOnError]) { this[_state] = _BufferingStreamSubscription[_STATE_WAIT_FOR_CANCEL]; this[_cancel](); if (dart.is(this[_cancelFuture], Future)) { this[_cancelFuture].whenComplete(sendError); } else { sendError(); } } else { sendError(); this[_checkState](wasInputPaused); } } [_sendDone]() { dart.assert(!dart.notNull(this[_isCanceled])); dart.assert(!dart.notNull(this[_isPaused])); dart.assert(!dart.notNull(this[_inCallback])); // Function sendDone: () → void function sendDone() { if (!dart.notNull(this[_waitsForCancel])) return; this[_state] = dart.notNull(_BufferingStreamSubscription[_STATE_CANCELED]) | dart.notNull(_BufferingStreamSubscription[_STATE_CLOSED]) | dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); this[_zone].runGuarded(this[_onDone]); this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); } this[_cancel](); this[_state] = _BufferingStreamSubscription[_STATE_WAIT_FOR_CANCEL]; if (dart.is(this[_cancelFuture], Future)) { this[_cancelFuture].whenComplete(sendDone); } else { sendDone(); } } [_guardCallback](callback) { dart.assert(!dart.notNull(this[_inCallback])); let wasInputPaused = this[_isInputPaused]; this[_state] = _BufferingStreamSubscription[_STATE_IN_CALLBACK]; dart.dinvokef(callback); this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); this[_checkState](wasInputPaused); } [_checkState](wasInputPaused) { dart.assert(!dart.notNull(this[_inCallback])); if (dart.notNull(this[_hasPending]) && dart.notNull(this[_pending].isEmpty)) { this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_HAS_PENDING]); if (dart.notNull(this[_isInputPaused]) && dart.notNull(this[_mayResumeInput])) { this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_INPUT_PAUSED]); } } while (true) { if (this[_isCanceled]) { this[_pending] = null; return; } let isInputPaused = this[_isInputPaused]; if (wasInputPaused == isInputPaused) break; this[_state] = _BufferingStreamSubscription[_STATE_IN_CALLBACK]; if (isInputPaused) { this[_onPause](); } else { this[_onResume](); } this[_state] = ~dart.notNull(_BufferingStreamSubscription[_STATE_IN_CALLBACK]); wasInputPaused = isInputPaused; } if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_isPaused])) { this[_pending].schedule(this); } } } _BufferingStreamSubscription[dart.implements] = () => [StreamSubscription$(T), _EventSink$(T), _EventDispatch$(T)]; _BufferingStreamSubscription._STATE_CANCEL_ON_ERROR = 1; _BufferingStreamSubscription._STATE_CLOSED = 2; _BufferingStreamSubscription._STATE_INPUT_PAUSED = 4; _BufferingStreamSubscription._STATE_CANCELED = 8; _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL = 16; _BufferingStreamSubscription._STATE_IN_CALLBACK = 32; _BufferingStreamSubscription._STATE_HAS_PENDING = 64; _BufferingStreamSubscription._STATE_PAUSE_COUNT = 128; _BufferingStreamSubscription._STATE_PAUSE_COUNT_SHIFT = 7; return _BufferingStreamSubscription; }); let _BufferingStreamSubscription = _BufferingStreamSubscription$(); let _ControllerSubscription$ = dart.generic(function(T) { class _ControllerSubscription extends _BufferingStreamSubscription$(T) { _ControllerSubscription(controller$, onData, onError, onDone, cancelOnError) { this[_controller] = controller$; super._BufferingStreamSubscription(onData, onError, onDone, cancelOnError); } [_onCancel]() { return this[_controller][_recordCancel](this); } [_onPause]() { this[_controller][_recordPause](this); } [_onResume]() { this[_controller][_recordResume](this); } } return _ControllerSubscription; }); let _ControllerSubscription = _ControllerSubscription$(); let _BroadcastSubscription$ = dart.generic(function(T) { class _BroadcastSubscription extends _ControllerSubscription$(T) { _BroadcastSubscription(controller, onData, onError, onDone, cancelOnError) { this[_eventState] = null; this[_next] = null; this[_previous] = null; super._ControllerSubscription(dart.as(controller, _StreamControllerLifecycle$(T)), onData, onError, onDone, cancelOnError); this[_next] = this[_previous] = this; } get [_controller]() { return dart.as(super[_controller], _BroadcastStreamController); } [_expectsEvent](eventId) { return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscription[_STATE_EVENT_ID])) == eventId; } [_toggleEventId]() { this[_eventState] = _BroadcastSubscription[_STATE_EVENT_ID]; } get [_isFiring]() { return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscription[_STATE_FIRING])) != 0; } [_setRemoveAfterFiring]() { dart.assert(this[_isFiring]); this[_eventState] = _BroadcastSubscription[_STATE_REMOVE_AFTER_FIRING]; } get [_removeAfterFiring]() { return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscription[_STATE_REMOVE_AFTER_FIRING])) != 0; } [_onPause]() {} [_onResume]() {} } _BroadcastSubscription[dart.implements] = () => [_BroadcastSubscriptionLink]; _BroadcastSubscription._STATE_EVENT_ID = 1; _BroadcastSubscription._STATE_FIRING = 2; _BroadcastSubscription._STATE_REMOVE_AFTER_FIRING = 4; return _BroadcastSubscription; }); let _BroadcastSubscription = _BroadcastSubscription$(); let _STATE_INITIAL = Symbol('_STATE_INITIAL'); let _addStreamState = Symbol('_addStreamState'); let _doneFuture = Symbol('_doneFuture'); let _isEmpty = Symbol('_isEmpty'); let _hasOneListener = Symbol('_hasOneListener'); let _isAddingStream = Symbol('_isAddingStream'); let _STATE_ADDSTREAM = Symbol('_STATE_ADDSTREAM'); let _mayAddEvent = Symbol('_mayAddEvent'); let _ensureDoneFuture = Symbol('_ensureDoneFuture'); let _addListener = Symbol('_addListener'); let _removeListener = Symbol('_removeListener'); let _callOnCancel = Symbol('_callOnCancel'); let _addEventError = Symbol('_addEventError'); let _forEachListener = Symbol('_forEachListener'); let _mayComplete = Symbol('_mayComplete'); let _asyncComplete = Symbol('_asyncComplete'); let _BroadcastStreamController$ = dart.generic(function(T) { class _BroadcastStreamController extends core.Object { _BroadcastStreamController(onListen$, onCancel$) { this[_onListen] = onListen$; this[_onCancel] = onCancel$; this[_state] = _BroadcastStreamController[_STATE_INITIAL]; this[_next] = null; this[_previous] = null; this[_addStreamState] = null; this[_doneFuture] = null; this[_next] = this[_previous] = this; } get stream() { return new (_BroadcastStream$(T))(this); } get sink() { return new (_StreamSinkWrapper$(T))(this); } get isClosed() { return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamController[_STATE_CLOSED])) != 0; } get isPaused() { return false; } get hasListener() { return !dart.notNull(this[_isEmpty]); } get [_hasOneListener]() { dart.assert(!dart.notNull(this[_isEmpty])); return core.identical(this[_next][_next], this); } get [_isFiring]() { return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamController[_STATE_FIRING])) != 0; } get [_isAddingStream]() { return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamController[_STATE_ADDSTREAM])) != 0; } get [_mayAddEvent]() { return dart.notNull(this[_state]) < dart.notNull(_BroadcastStreamController[_STATE_CLOSED]); } [_ensureDoneFuture]() { if (this[_doneFuture] != null) return this[_doneFuture]; return this[_doneFuture] = new _Future(); } get [_isEmpty]() { return core.identical(this[_next], this); } [_addListener](subscription) { dart.assert(core.identical(subscription[_next], subscription)); subscription[_previous] = this[_previous]; subscription[_next] = this; this[_previous][_next] = subscription; this[_previous] = subscription; subscription[_eventState] = dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamController[_STATE_EVENT_ID]); } [_removeListener](subscription) { dart.assert(core.identical(subscription[_controller], this)); dart.assert(!dart.notNull(core.identical(subscription[_next], subscription))); let previous = subscription[_previous]; let next = subscription[_next]; previous[_next] = next; next[_previous] = previous; subscription[_next] = subscription[_previous] = subscription; } [_subscribe](onData, onError, onDone, cancelOnError) { if (this.isClosed) { if (onDone == null) onDone = _nullDoneHandler; return new (_DoneStreamSubscription$(T))(onDone); } let subscription = new (_BroadcastSubscription$(T))(this, onData, onError, onDone, cancelOnError); this[_addListener](dart.as(subscription, _BroadcastSubscription$(T))); if (core.identical(this[_next], this[_previous])) { _runGuarded(this[_onListen]); } return dart.as(subscription, StreamSubscription$(T)); } [_recordCancel](subscription) { if (core.identical(subscription[_next], subscription)) return null; dart.assert(!dart.notNull(core.identical(subscription[_next], subscription))); if (subscription[_isFiring]) { subscription[_setRemoveAfterFiring](); } else { dart.assert(!dart.notNull(core.identical(subscription[_next], subscription))); this[_removeListener](subscription); if (!dart.notNull(this[_isFiring]) && dart.notNull(this[_isEmpty])) { this[_callOnCancel](); } } return null; } [_recordPause](subscription) {} [_recordResume](subscription) {} [_addEventError]() { if (this.isClosed) { return new core.StateError("Cannot add new events after calling close"); } dart.assert(this[_isAddingStream]); return new core.StateError("Cannot add new events while doing an addStream"); } add(data) { if (!dart.notNull(this[_mayAddEvent])) throw this[_addEventError](); this[_sendData](data); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; error = _nonNullError(error); if (!dart.notNull(this[_mayAddEvent])) throw this[_addEventError](); let replacement = Zone.current.errorCallback(error, stackTrace); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } this[_sendError](error, stackTrace); } close() { if (this.isClosed) { dart.assert(this[_doneFuture] != null); return this[_doneFuture]; } if (!dart.notNull(this[_mayAddEvent])) throw this[_addEventError](); this[_state] = _BroadcastStreamController[_STATE_CLOSED]; let doneFuture = this[_ensureDoneFuture](); this[_sendDone](); return doneFuture; } get done() { return this[_ensureDoneFuture](); } addStream(stream, opts) { let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true; if (!dart.notNull(this[_mayAddEvent])) throw this[_addEventError](); this[_state] = _BroadcastStreamController[_STATE_ADDSTREAM]; this[_addStreamState] = dart.as(new _AddStreamState(this, stream, cancelOnError), _AddStreamState$(T)); return this[_addStreamState].addStreamFuture; } [_add](data) { this[_sendData](data); } [_addError](error, stackTrace) { this[_sendError](error, stackTrace); } [_close]() { dart.assert(this[_isAddingStream]); let addState = this[_addStreamState]; this[_addStreamState] = null; this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_ADDSTREAM]); addState.complete(); } [_forEachListener](action) { if (this[_isFiring]) { throw new core.StateError("Cannot fire new event. Controller is already firing an event"); } if (this[_isEmpty]) return; let id = dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamController[_STATE_EVENT_ID]); this[_state] = dart.notNull(_BroadcastStreamController[_STATE_EVENT_ID]) | dart.notNull(_BroadcastStreamController[_STATE_FIRING]); let link = this[_next]; while (!dart.notNull(core.identical(link, this))) { let subscription = dart.as(link, _BroadcastSubscription$(T)); if (subscription[_expectsEvent](id)) { subscription[_eventState] = _BroadcastSubscription[_STATE_FIRING]; action(subscription); subscription[_toggleEventId](); link = subscription[_next]; if (subscription[_removeAfterFiring]) { this[_removeListener](subscription); } subscription[_eventState] = ~dart.notNull(_BroadcastSubscription[_STATE_FIRING]); } else { link = subscription[_next]; } } this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_FIRING]); if (this[_isEmpty]) { this[_callOnCancel](); } } [_callOnCancel]() { dart.assert(this[_isEmpty]); if (dart.notNull(this.isClosed) && dart.notNull(this[_doneFuture][_mayComplete])) { this[_doneFuture][_asyncComplete](null); } _runGuarded(this[_onCancel]); } } _BroadcastStreamController[dart.implements] = () => [StreamController$(T), _StreamControllerLifecycle$(T), _BroadcastSubscriptionLink, _EventSink$(T), _EventDispatch$(T)]; _BroadcastStreamController._STATE_INITIAL = 0; _BroadcastStreamController._STATE_EVENT_ID = 1; _BroadcastStreamController._STATE_FIRING = 2; _BroadcastStreamController._STATE_CLOSED = 4; _BroadcastStreamController._STATE_ADDSTREAM = 8; return _BroadcastStreamController; }); let _BroadcastStreamController = _BroadcastStreamController$(); let _SyncBroadcastStreamController$ = dart.generic(function(T) { class _SyncBroadcastStreamController extends _BroadcastStreamController$(T) { _SyncBroadcastStreamController(onListen, onCancel) { super._BroadcastStreamController(onListen, onCancel); } [_sendData](data) { if (this[_isEmpty]) return; if (this[_hasOneListener]) { this[_state] = _BroadcastStreamController[_STATE_FIRING]; let subscription = dart.as(this[_next], _BroadcastSubscription); subscription[_add](data); this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_FIRING]); if (this[_isEmpty]) { this[_callOnCancel](); } return; } this[_forEachListener]((subscription) => { subscription[_add](data); }); } [_sendError](error, stackTrace) { if (this[_isEmpty]) return; this[_forEachListener]((subscription) => { subscription[_addError](error, stackTrace); }); } [_sendDone]() { if (!dart.notNull(this[_isEmpty])) { this[_forEachListener](dart.as((subscription) => { subscription[_close](); }, dart.throw_("Unimplemented type (_BufferingStreamSubscription) → void"))); } else { dart.assert(this[_doneFuture] != null); dart.assert(this[_doneFuture][_mayComplete]); this[_doneFuture][_asyncComplete](null); } } } return _SyncBroadcastStreamController; }); let _SyncBroadcastStreamController = _SyncBroadcastStreamController$(); let _AsyncBroadcastStreamController$ = dart.generic(function(T) { class _AsyncBroadcastStreamController extends _BroadcastStreamController$(T) { _AsyncBroadcastStreamController(onListen, onCancel) { super._BroadcastStreamController(onListen, onCancel); } [_sendData](data) { for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) { let subscription = dart.as(link, _BroadcastSubscription$(T)); subscription[_addPending](new _DelayedData(data)); } } [_sendError](error, stackTrace) { for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) { let subscription = dart.as(link, _BroadcastSubscription$(T)); subscription[_addPending](new _DelayedError(error, stackTrace)); } } [_sendDone]() { if (!dart.notNull(this[_isEmpty])) { for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) { let subscription = dart.as(link, _BroadcastSubscription$(T)); subscription[_addPending](new _DelayedDone()); } } else { dart.assert(this[_doneFuture] != null); dart.assert(this[_doneFuture][_mayComplete]); this[_doneFuture][_asyncComplete](null); } } } return _AsyncBroadcastStreamController; }); let _AsyncBroadcastStreamController = _AsyncBroadcastStreamController$(); let _addPendingEvent = Symbol('_addPendingEvent'); let _AsBroadcastStreamController$ = dart.generic(function(T) { class _AsBroadcastStreamController extends _SyncBroadcastStreamController$(T) { _AsBroadcastStreamController(onListen, onCancel) { this[_pending] = null; super._SyncBroadcastStreamController(onListen, onCancel); } get [_hasPending]() { return dart.notNull(this[_pending] != null) && !dart.notNull(this[_pending].isEmpty); } [_addPendingEvent](event) { if (this[_pending] == null) { this[_pending] = new _StreamImplEvents(); } this[_pending].add(event); } add(data) { if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) { this[_addPendingEvent](new (_DelayedData$(T))(data)); return; } super.add(data); while (this[_hasPending]) { this[_pending].handleNext(this); } } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) { this[_addPendingEvent](new _DelayedError(error, stackTrace)); return; } if (!dart.notNull(this[_mayAddEvent])) throw this[_addEventError](); this[_sendError](error, stackTrace); while (this[_hasPending]) { this[_pending].handleNext(this); } } close() { if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) { this[_addPendingEvent](new _DelayedDone()); this[_state] = _BroadcastStreamController[_STATE_CLOSED]; return super.done; } let result = super.close(); dart.assert(!dart.notNull(this[_hasPending])); return result; } [_callOnCancel]() { if (this[_hasPending]) { this[_pending].clear(); this[_pending] = null; } super[_callOnCancel](); } } _AsBroadcastStreamController[dart.implements] = () => [_EventDispatch$(T)]; return _AsBroadcastStreamController; }); let _AsBroadcastStreamController = _AsBroadcastStreamController$(); let _pauseCount = Symbol('_pauseCount'); let _resume = Symbol('_resume'); let _DoneSubscription$ = dart.generic(function(T) { class _DoneSubscription extends core.Object { _DoneSubscription() { this[_pauseCount] = 0; } onData(handleData) {} onError(handleError) {} onDone(handleDone) {} pause(resumeSignal) { if (resumeSignal === void 0) resumeSignal = null; if (resumeSignal != null) resumeSignal.then(this[_resume]); this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1; } resume() { this[_resume](null); } [_resume](_) { if (dart.notNull(this[_pauseCount]) > 0) this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1; } cancel() { return new _Future.immediate(null); } get isPaused() { return dart.notNull(this[_pauseCount]) > 0; } asFuture(value) { if (value === void 0) value = null; return new _Future(); } } _DoneSubscription[dart.implements] = () => [StreamSubscription$(T)]; return _DoneSubscription; }); let _DoneSubscription = _DoneSubscription$(); class DeferredLibrary extends core.Object { DeferredLibrary(libraryName, opts) { let uri = opts && 'uri' in opts ? opts.uri : null; this.libraryName = libraryName; this.uri = uri; } load() { throw 'DeferredLibrary not supported. ' + 'please use the `import "lib.dart" deferred as lib` syntax.'; } } let _s = Symbol('_s'); class DeferredLoadException extends core.Object { DeferredLoadException(s$) { this[_s] = s$; } toString() { return `DeferredLoadException: '${this[_s]}'`; } } DeferredLoadException[dart.implements] = () => [core.Exception]; let _completeWithValue = Symbol('_completeWithValue'); let Future$ = dart.generic(function(T) { class Future extends core.Object { Future(computation) { let result = new (_Future$(T))(); Timer.run(() => { try { result[_complete](computation()); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(result, e, s); } }); return dart.as(result, Future$(T)); } microtask(computation) { let result = new (_Future$(T))(); scheduleMicrotask(() => { try { result[_complete](computation()); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(result, e, s); } }); return dart.as(result, Future$(T)); } sync(computation) { try { let result = computation(); return new Future$(T).value(result); } catch (error) { let stackTrace = dart.stackTrace(error); return new Future$(T).error(error, stackTrace); } } value(value) { if (value === void 0) value = null; return new _Future$(T).immediate(value); } error(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; error = _nonNullError(error); if (!dart.notNull(core.identical(Zone.current, _ROOT_ZONE))) { let replacement = Zone.current.errorCallback(error, stackTrace); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } } return new _Future$(T).immediateError(error, stackTrace); } delayed(duration, computation) { if (computation === void 0) computation = null; let result = new (_Future$(T))(); new Timer(duration, () => { try { result[_complete](computation == null ? null : computation()); } catch (e) { let s = dart.stackTrace(e); _completeWithErrorCallback(result, e, s); } }); return dart.as(result, Future$(T)); } static wait(futures, opts) { let eagerError = opts && 'eagerError' in opts ? opts.eagerError : false; let cleanUp = opts && 'cleanUp' in opts ? opts.cleanUp : null; let result = new (_Future$(core.List))(); let values = null; let remaining = 0; let error = null; let stackTrace = null; // Function handleError: (dynamic, dynamic) → void function handleError(theError, theStackTrace) { remaining = dart.notNull(remaining) - 1; if (values != null) { if (cleanUp != null) { for (let value of values) { if (value != null) { new Future.sync(() => { dart.dinvokef(cleanUp, value); }); } } } values = null; if (remaining == 0 || dart.notNull(eagerError)) { result[_completeError](theError, dart.as(theStackTrace, core.StackTrace)); } else { error = theError; stackTrace = dart.as(theStackTrace, core.StackTrace); } } else if (remaining == 0 && !dart.notNull(eagerError)) { result[_completeError](error, stackTrace); } } for (let future of futures) { let pos = ((x) => remaining = dart.notNull(x) + 1, x)(remaining); future.then((value) => { remaining = dart.notNull(remaining) - 1; if (values != null) { values[core.$set](pos, value); if (remaining == 0) { result[_completeWithValue](values); } } else { if (dart.notNull(cleanUp != null) && dart.notNull(value != null)) { new Future.sync(() => { dart.dinvokef(cleanUp, value); }); } if (remaining == 0 && !dart.notNull(eagerError)) { result[_completeError](error, stackTrace); } } }, {onError: handleError}); } if (remaining == 0) { return dart.as(new Future.value(/* Unimplemented const */new core.List.from([])), Future$(core.List)); } values = new core.List(remaining); return result; } static forEach(input, f) { let iterator = input[core.$iterator]; return Future.doWhile(() => { if (!dart.notNull(iterator.moveNext())) return false; return new Future.sync(() => dart.dinvokef(f, iterator.current)).then((_) => true); }); } static doWhile(f) { let doneSignal = new _Future(); let nextIteration = null; nextIteration = Zone.current.bindUnaryCallback((keepGoing) => { if (keepGoing) { new Future.sync(f).then(dart.as(nextIteration, dart.throw_("Unimplemented type (dynamic) → dynamic")), {onError: doneSignal[_completeError]}); } else { doneSignal[_complete](null); } }, {runGuarded: true}); dart.dinvokef(nextIteration, true); return doneSignal; } } dart.defineNamedConstructor(Future, 'microtask'); dart.defineNamedConstructor(Future, 'sync'); dart.defineNamedConstructor(Future, 'value'); dart.defineNamedConstructor(Future, 'error'); dart.defineNamedConstructor(Future, 'delayed'); dart.defineLazyProperties(Future, { get _nullFuture() { return new Future.value(null); } }); return Future; }); let Future = Future$(); class TimeoutException extends core.Object { TimeoutException(message, duration) { if (duration === void 0) duration = null; this.message = message; this.duration = duration; } toString() { let result = "TimeoutException"; if (this.duration != null) result = `TimeoutException after ${this.duration}`; if (this.message != null) result = `${result}: ${this.message}`; return result; } } TimeoutException[dart.implements] = () => [core.Exception]; let Completer$ = dart.generic(function(T) { class Completer extends core.Object { Completer() { return new (_AsyncCompleter$(T))(); } sync() { return new (_SyncCompleter$(T))(); } } dart.defineNamedConstructor(Completer, 'sync'); return Completer; }); let Completer = Completer$(); // Function _completeWithErrorCallback: (_Future, dynamic, dynamic) → void function _completeWithErrorCallback(result, error, stackTrace) { let replacement = Zone.current.errorCallback(error, dart.as(stackTrace, core.StackTrace)); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } result[_completeError](error, dart.as(stackTrace, core.StackTrace)); } // Function _nonNullError: (Object) → Object function _nonNullError(error) { return error != null ? error : new core.NullThrownError(); } let _FutureOnValue$ = dart.generic(function(T) { class _FutureOnValue extends core.Function {} return _FutureOnValue; }); let _FutureOnValue = _FutureOnValue$(); class _FutureErrorTest extends core.Function {} class _FutureAction extends core.Function {} let _Completer$ = dart.generic(function(T) { class _Completer extends core.Object { _Completer() { this.future = new (_Future$(T))(); } completeError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; error = _nonNullError(error); if (!dart.notNull(this.future[_mayComplete])) throw new core.StateError("Future already completed"); let replacement = Zone.current.errorCallback(error, stackTrace); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } this[_completeError](error, stackTrace); } get isCompleted() { return !dart.notNull(this.future[_mayComplete]); } } _Completer[dart.implements] = () => [Completer$(T)]; return _Completer; }); let _Completer = _Completer$(); let _asyncCompleteError = Symbol('_asyncCompleteError'); let _AsyncCompleter$ = dart.generic(function(T) { class _AsyncCompleter extends _Completer$(T) { complete(value) { if (value === void 0) value = null; if (!dart.notNull(this.future[_mayComplete])) throw new core.StateError("Future already completed"); this.future[_asyncComplete](value); } [_completeError](error, stackTrace) { this.future[_asyncCompleteError](error, stackTrace); } } return _AsyncCompleter; }); let _AsyncCompleter = _AsyncCompleter$(); let _SyncCompleter$ = dart.generic(function(T) { class _SyncCompleter extends _Completer$(T) { complete(value) { if (value === void 0) value = null; if (!dart.notNull(this.future[_mayComplete])) throw new core.StateError("Future already completed"); this.future[_complete](value); } [_completeError](error, stackTrace) { this.future[_completeError](error, stackTrace); } } return _SyncCompleter; }); let _SyncCompleter = _SyncCompleter$(); let _nextListener = Symbol('_nextListener'); let _onValue = Symbol('_onValue'); let _errorTest = Symbol('_errorTest'); let _whenCompleteAction = Symbol('_whenCompleteAction'); class _FutureListener extends core.Object { then(result, onValue, errorCallback) { this.result = result; this.callback = onValue; this.errorCallback = errorCallback; this.state = errorCallback == null ? _FutureListener.STATE_THEN : _FutureListener.STATE_THEN_ONERROR; this[_nextListener] = null; } catchError(result, errorCallback, test) { this.result = result; this.errorCallback = errorCallback; this.callback = test; this.state = test == null ? _FutureListener.STATE_CATCHERROR : _FutureListener.STATE_CATCHERROR_TEST; this[_nextListener] = null; } whenComplete(result, onComplete) { this.result = result; this.callback = onComplete; this.errorCallback = null; this.state = _FutureListener.STATE_WHENCOMPLETE; this[_nextListener] = null; } chain(result) { this.result = result; this.callback = null; this.errorCallback = null; this.state = _FutureListener.STATE_CHAIN; this[_nextListener] = null; } get [_zone]() { return this.result[_zone]; } get handlesValue() { return (dart.notNull(this.state) & dart.notNull(_FutureListener.MASK_VALUE)) != 0; } get handlesError() { return (dart.notNull(this.state) & dart.notNull(_FutureListener.MASK_ERROR)) != 0; } get hasErrorTest() { return this.state == _FutureListener.STATE_CATCHERROR_TEST; } get handlesComplete() { return this.state == _FutureListener.STATE_WHENCOMPLETE; } get [_onValue]() { dart.assert(this.handlesValue); return dart.as(this.callback, _FutureOnValue); } get [_onError]() { return this.errorCallback; } get [_errorTest]() { dart.assert(this.hasErrorTest); return dart.as(this.callback, _FutureErrorTest); } get [_whenCompleteAction]() { dart.assert(this.handlesComplete); return dart.as(this.callback, _FutureAction); } } dart.defineNamedConstructor(_FutureListener, 'then'); dart.defineNamedConstructor(_FutureListener, 'catchError'); dart.defineNamedConstructor(_FutureListener, 'whenComplete'); dart.defineNamedConstructor(_FutureListener, 'chain'); _FutureListener.MASK_VALUE = 1; _FutureListener.MASK_ERROR = 2; _FutureListener.MASK_TEST_ERROR = 4; _FutureListener.MASK_WHENCOMPLETE = 8; _FutureListener.STATE_CHAIN = 0; _FutureListener.STATE_THEN = _FutureListener.MASK_VALUE; _FutureListener.STATE_THEN_ONERROR = dart.notNull(_FutureListener.MASK_VALUE) | dart.notNull(_FutureListener.MASK_ERROR); _FutureListener.STATE_CATCHERROR = _FutureListener.MASK_ERROR; _FutureListener.STATE_CATCHERROR_TEST = dart.notNull(_FutureListener.MASK_ERROR) | dart.notNull(_FutureListener.MASK_TEST_ERROR); _FutureListener.STATE_WHENCOMPLETE = _FutureListener.MASK_WHENCOMPLETE; let _INCOMPLETE = Symbol('_INCOMPLETE'); let _resultOrListeners = Symbol('_resultOrListeners'); let _isChained = Symbol('_isChained'); let _CHAINED = Symbol('_CHAINED'); let _isComplete = Symbol('_isComplete'); let _VALUE = Symbol('_VALUE'); let _hasValue = Symbol('_hasValue'); let _hasError = Symbol('_hasError'); let _ERROR = Symbol('_ERROR'); let _markPendingCompletion = Symbol('_markPendingCompletion'); let _PENDING_COMPLETE = Symbol('_PENDING_COMPLETE'); let _value = Symbol('_value'); let _error = Symbol('_error'); let _setValue = Symbol('_setValue'); let _setErrorObject = Symbol('_setErrorObject'); let _setError = Symbol('_setError'); let _propagateToListeners = Symbol('_propagateToListeners'); let _removeListeners = Symbol('_removeListeners'); let _chainForeignFuture = Symbol('_chainForeignFuture'); let _chainCoreFuture = Symbol('_chainCoreFuture'); let _enter = Symbol('_enter'); let _leave = Symbol('_leave'); let _Future$ = dart.generic(function(T) { class _Future extends core.Object { _Future() { this[_zone] = Zone.current; this[_state] = _Future[_INCOMPLETE]; this[_resultOrListeners] = null; } immediate(value) { this[_zone] = Zone.current; this[_state] = _Future[_INCOMPLETE]; this[_resultOrListeners] = null; this[_asyncComplete](value); } immediateError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; this[_zone] = Zone.current; this[_state] = _Future[_INCOMPLETE]; this[_resultOrListeners] = null; this[_asyncCompleteError](error, stackTrace); } get [_mayComplete]() { return this[_state] == _Future[_INCOMPLETE]; } get [_isChained]() { return this[_state] == _Future[_CHAINED]; } get [_isComplete]() { return dart.notNull(this[_state]) >= dart.notNull(_Future[_VALUE]); } get [_hasValue]() { return this[_state] == _Future[_VALUE]; } get [_hasError]() { return this[_state] == _Future[_ERROR]; } set [_isChained](value) { if (value) { dart.assert(!dart.notNull(this[_isComplete])); this[_state] = _Future[_CHAINED]; } else { dart.assert(this[_isChained]); this[_state] = _Future[_INCOMPLETE]; } } then(f, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let result = new _Future(); if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) { f = dart.as(result[_zone].registerUnaryCallback(f), dart.throw_("Unimplemented type (T) → dynamic")); if (onError != null) { onError = _registerErrorHandler(onError, result[_zone]); } } this[_addListener](new _FutureListener.then(result, f, onError)); return result; } catchError(onError, opts) { let test = opts && 'test' in opts ? opts.test : null; let result = new _Future(); if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) { onError = _registerErrorHandler(onError, result[_zone]); if (test != null) test = dart.as(result[_zone].registerUnaryCallback(test), dart.throw_("Unimplemented type (dynamic) → bool")); } this[_addListener](new _FutureListener.catchError(result, onError, test)); return result; } whenComplete(action) { let result = new (_Future$(T))(); if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) { action = result[_zone].registerCallback(action); } this[_addListener](new _FutureListener.whenComplete(result, action)); return dart.as(result, Future$(T)); } asStream() { return dart.as(new Stream.fromFuture(this), Stream$(T)); } [_markPendingCompletion]() { if (!dart.notNull(this[_mayComplete])) throw new core.StateError("Future already completed"); this[_state] = _Future[_PENDING_COMPLETE]; } get [_value]() { dart.assert(dart.notNull(this[_isComplete]) && dart.notNull(this[_hasValue])); return dart.as(this[_resultOrListeners], T); } get [_error]() { dart.assert(dart.notNull(this[_isComplete]) && dart.notNull(this[_hasError])); return dart.as(this[_resultOrListeners], AsyncError); } [_setValue](value) { dart.assert(!dart.notNull(this[_isComplete])); this[_state] = _Future[_VALUE]; this[_resultOrListeners] = value; } [_setErrorObject](error) { dart.assert(!dart.notNull(this[_isComplete])); this[_state] = _Future[_ERROR]; this[_resultOrListeners] = error; } [_setError](error, stackTrace) { this[_setErrorObject](new AsyncError(error, stackTrace)); } [_addListener](listener) { dart.assert(listener[_nextListener] == null); if (this[_isComplete]) { this[_zone].scheduleMicrotask((() => { _Future[_propagateToListeners](this, listener); }).bind(this)); } else { listener[_nextListener] = dart.as(this[_resultOrListeners], _FutureListener); this[_resultOrListeners] = listener; } } [_removeListeners]() { dart.assert(!dart.notNull(this[_isComplete])); let current = dart.as(this[_resultOrListeners], _FutureListener); this[_resultOrListeners] = null; let prev = null; while (current != null) { let next = current[_nextListener]; current[_nextListener] = prev; prev = current; current = next; } return prev; } static [_chainForeignFuture](source, target) { dart.assert(!dart.notNull(target[_isComplete])); dart.assert(!dart.is(source, _Future)); target[_isChained] = true; source.then((value) => { dart.assert(target[_isChained]); target[_completeWithValue](value); }, { onError: (error, stackTrace) => { if (stackTrace === void 0) stackTrace = null; dart.assert(target[_isChained]); target[_completeError](error, dart.as(stackTrace, core.StackTrace)); } }); } static [_chainCoreFuture](source, target) { dart.assert(!dart.notNull(target[_isComplete])); dart.assert(dart.is(source, _Future)); target[_isChained] = true; let listener = new _FutureListener.chain(target); if (source[_isComplete]) { _Future[_propagateToListeners](source, listener); } else { source[_addListener](listener); } } [_complete](value) { dart.assert(!dart.notNull(this[_isComplete])); if (dart.is(value, Future)) { if (dart.is(value, _Future)) { _Future[_chainCoreFuture](dart.as(value, _Future), this); } else { _Future[_chainForeignFuture](dart.as(value, Future), this); } } else { let listeners = this[_removeListeners](); this[_setValue](dart.as(value, T)); _Future[_propagateToListeners](this, listeners); } } [_completeWithValue](value) { dart.assert(!dart.notNull(this[_isComplete])); dart.assert(!dart.is(value, Future)); let listeners = this[_removeListeners](); this[_setValue](dart.as(value, T)); _Future[_propagateToListeners](this, listeners); } [_completeError](error, stackTrace) { if (stackTrace === void 0) stackTrace = null; dart.assert(!dart.notNull(this[_isComplete])); let listeners = this[_removeListeners](); this[_setError](error, stackTrace); _Future[_propagateToListeners](this, listeners); } [_asyncComplete](value) { dart.assert(!dart.notNull(this[_isComplete])); if (value == null) { } else if (dart.is(value, Future)) { let typedFuture = dart.as(value, Future$(T)); if (dart.is(typedFuture, _Future)) { let coreFuture = dart.as(typedFuture, _Future$(T)); if (dart.notNull(coreFuture[_isComplete]) && dart.notNull(coreFuture[_hasError])) { this[_markPendingCompletion](); this[_zone].scheduleMicrotask((() => { _Future[_chainCoreFuture](coreFuture, this); }).bind(this)); } else { _Future[_chainCoreFuture](coreFuture, this); } } else { _Future[_chainForeignFuture](typedFuture, this); } return; } else { let typedValue = dart.as(value, T); } this[_markPendingCompletion](); this[_zone].scheduleMicrotask((() => { this[_completeWithValue](value); }).bind(this)); } [_asyncCompleteError](error, stackTrace) { dart.assert(!dart.notNull(this[_isComplete])); this[_markPendingCompletion](); this[_zone].scheduleMicrotask((() => { this[_completeError](error, stackTrace); }).bind(this)); } static [_propagateToListeners](source, listeners) { while (true) { dart.assert(source[_isComplete]); let hasError = source[_hasError]; if (listeners == null) { if (hasError) { let asyncError = source[_error]; source[_zone].handleUncaughtError(asyncError.error, asyncError.stackTrace); } return; } while (listeners[_nextListener] != null) { let listener = listeners; listeners = listener[_nextListener]; listener[_nextListener] = null; _Future[_propagateToListeners](source, listener); } let listener = listeners; let listenerHasValue = true; let sourceValue = hasError ? null : source[_value]; let listenerValueOrError = sourceValue; let isPropagationAborted = false; if (dart.notNull(hasError) || dart.notNull(listener.handlesValue) || dart.notNull(listener.handlesComplete)) { let zone = listener[_zone]; if (dart.notNull(hasError) && !dart.notNull(source[_zone].inSameErrorZone(zone))) { let asyncError = source[_error]; source[_zone].handleUncaughtError(asyncError.error, asyncError.stackTrace); return; } let oldZone = null; if (!dart.notNull(core.identical(Zone.current, zone))) { oldZone = Zone[_enter](zone); } // Function handleValueCallback: () → bool function handleValueCallback() { try { listenerValueOrError = zone.runUnary(listener[_onValue], sourceValue); return true; } catch (e) { let s = dart.stackTrace(e); listenerValueOrError = new AsyncError(e, s); return false; } } // Function handleError: () → void function handleError() { let asyncError = source[_error]; let matchesTest = true; if (listener.hasErrorTest) { let test = listener[_errorTest]; try { matchesTest = dart.as(zone.runUnary(test, asyncError.error), core.bool); } catch (e) { let s = dart.stackTrace(e); listenerValueOrError = core.identical(asyncError.error, e) ? asyncError : new AsyncError(e, s); listenerHasValue = false; return; } } let errorCallback = listener[_onError]; if (dart.notNull(matchesTest) && dart.notNull(errorCallback != null)) { try { if (dart.is(errorCallback, ZoneBinaryCallback)) { listenerValueOrError = zone.runBinary(errorCallback, asyncError.error, asyncError.stackTrace); } else { listenerValueOrError = zone.runUnary(dart.as(errorCallback, dart.throw_("Unimplemented type (dynamic) → dynamic")), asyncError.error); } } catch (e) { let s = dart.stackTrace(e); listenerValueOrError = core.identical(asyncError.error, e) ? asyncError : new AsyncError(e, s); listenerHasValue = false; return; } listenerHasValue = true; } else { listenerValueOrError = asyncError; listenerHasValue = false; } } // Function handleWhenCompleteCallback: () → void function handleWhenCompleteCallback() { let completeResult = null; try { completeResult = zone.run(listener[_whenCompleteAction]); } catch (e) { let s = dart.stackTrace(e); if (dart.notNull(hasError) && dart.notNull(core.identical(source[_error].error, e))) { listenerValueOrError = source[_error]; } else { listenerValueOrError = new AsyncError(e, s); } listenerHasValue = false; return; } if (dart.is(completeResult, Future)) { let result = listener.result; result[_isChained] = true; isPropagationAborted = true; dart.dinvoke(completeResult, 'then', (ignored) => { _Future[_propagateToListeners](source, new _FutureListener.chain(result)); }, { onError: (error, stackTrace) => { if (stackTrace === void 0) stackTrace = null; if (!dart.is(completeResult, _Future)) { completeResult = new _Future(); dart.dinvoke(completeResult, '_setError', error, stackTrace); } _Future[_propagateToListeners](dart.as(completeResult, _Future), new _FutureListener.chain(result)); } }); } } if (!dart.notNull(hasError)) { if (listener.handlesValue) { listenerHasValue = handleValueCallback(); } } else { handleError(); } if (listener.handlesComplete) { handleWhenCompleteCallback(); } if (oldZone != null) Zone[_leave](oldZone); if (isPropagationAborted) return; if (dart.notNull(listenerHasValue) && !dart.notNull(core.identical(sourceValue, listenerValueOrError)) && dart.notNull(dart.is(listenerValueOrError, Future))) { let chainSource = dart.as(listenerValueOrError, Future); let result = listener.result; if (dart.is(chainSource, _Future)) { if (chainSource[_isComplete]) { result[_isChained] = true; source = chainSource; listeners = new _FutureListener.chain(result); continue; } else { _Future[_chainCoreFuture](chainSource, result); } } else { _Future[_chainForeignFuture](chainSource, result); } return; } } let result = listener.result; listeners = result[_removeListeners](); if (listenerHasValue) { result[_setValue](listenerValueOrError); } else { let asyncError = dart.as(listenerValueOrError, AsyncError); result[_setErrorObject](asyncError); } source = result; } } timeout(timeLimit, opts) { let onTimeout = opts && 'onTimeout' in opts ? opts.onTimeout : null; if (this[_isComplete]) return new _Future.immediate(this); let result = new _Future(); let timer = null; if (onTimeout == null) { timer = new Timer(timeLimit, () => { result[_completeError](new TimeoutException("Future not completed", timeLimit)); }); } else { let zone = Zone.current; onTimeout = zone.registerCallback(onTimeout); timer = new Timer(timeLimit, () => { try { result[_complete](zone.run(onTimeout)); } catch (e) { let s = dart.stackTrace(e); result[_completeError](e, s); } }); } this.then((v) => { if (timer.isActive) { timer.cancel(); result[_completeWithValue](v); } }, { onError: (e, s) => { if (timer.isActive) { timer.cancel(); result[_completeError](e, dart.as(s, core.StackTrace)); } } }); return result; } } _Future[dart.implements] = () => [Future$(T)]; dart.defineNamedConstructor(_Future, 'immediate'); dart.defineNamedConstructor(_Future, 'immediateError'); _Future._INCOMPLETE = 0; _Future._PENDING_COMPLETE = 1; _Future._CHAINED = 2; _Future._VALUE = 4; _Future._ERROR = 8; return _Future; }); let _Future = _Future$(); class _AsyncCallback extends core.Function {} class _AsyncCallbackEntry extends core.Object { _AsyncCallbackEntry(callback) { this.callback = callback; this.next = null; } } exports._nextCallback = null; exports._lastCallback = null; exports._lastPriorityCallback = null; exports._isInCallbackLoop = false; // Function _asyncRunCallbackLoop: () → void function _asyncRunCallbackLoop() { while (exports._nextCallback != null) { exports._lastPriorityCallback = null; let entry = exports._nextCallback; exports._nextCallback = entry.next; if (exports._nextCallback == null) exports._lastCallback = null; entry.callback(); } } let _scheduleImmediate = Symbol('_scheduleImmediate'); // Function _asyncRunCallback: () → void function _asyncRunCallback() { exports._isInCallbackLoop = true; try { _asyncRunCallbackLoop(); } finally { exports._lastPriorityCallback = null; exports._isInCallbackLoop = false; if (exports._nextCallback != null) _AsyncRun[_scheduleImmediate](_asyncRunCallback); } } // Function _scheduleAsyncCallback: (dynamic) → void function _scheduleAsyncCallback(callback) { if (exports._nextCallback == null) { exports._nextCallback = exports._lastCallback = new _AsyncCallbackEntry(dart.as(callback, _AsyncCallback)); if (!dart.notNull(exports._isInCallbackLoop)) { _AsyncRun[_scheduleImmediate](_asyncRunCallback); } } else { let newEntry = new _AsyncCallbackEntry(dart.as(callback, _AsyncCallback)); exports._lastCallback.next = newEntry; exports._lastCallback = newEntry; } } // Function _schedulePriorityAsyncCallback: (dynamic) → void function _schedulePriorityAsyncCallback(callback) { let entry = new _AsyncCallbackEntry(dart.as(callback, _AsyncCallback)); if (exports._nextCallback == null) { _scheduleAsyncCallback(callback); exports._lastPriorityCallback = exports._lastCallback; } else if (exports._lastPriorityCallback == null) { entry.next = exports._nextCallback; exports._nextCallback = exports._lastPriorityCallback = entry; } else { entry.next = exports._lastPriorityCallback.next; exports._lastPriorityCallback.next = entry; exports._lastPriorityCallback = entry; if (entry.next == null) { exports._lastCallback = entry; } } } // Function scheduleMicrotask: (() → void) → void function scheduleMicrotask(callback) { if (core.identical(_ROOT_ZONE, Zone.current)) { _rootScheduleMicrotask(null, null, _ROOT_ZONE, callback); return; } Zone.current.scheduleMicrotask(Zone.current.bindCallback(callback, {runGuarded: true})); } let _initializeScheduleImmediate = Symbol('_initializeScheduleImmediate'); let _scheduleImmediateJsOverride = Symbol('_scheduleImmediateJsOverride'); let _scheduleImmediateWithSetImmediate = Symbol('_scheduleImmediateWithSetImmediate'); let _scheduleImmediateWithTimer = Symbol('_scheduleImmediateWithTimer'); let _createTimer = Symbol('_createTimer'); class _AsyncRun extends core.Object { static [_scheduleImmediate](callback) { dart.dinvokef(_AsyncRun.scheduleImmediateClosure, callback); } static [_initializeScheduleImmediate]() { _js_helper.requiresPreamble(); if (self.scheduleImmediate != null) { return _AsyncRun[_scheduleImmediateJsOverride]; } if (dart.notNull(self.MutationObserver != null) && dart.notNull(self.document != null)) { let div = self.document.createElement("div"); let span = self.document.createElement("span"); let storedCallback = null; // Function internalCallback: (dynamic) → dynamic function internalCallback(_) { _isolate_helper.leaveJsAsync(); let f = storedCallback; storedCallback = null; dart.dinvokef(f); } ; let observer = new self.MutationObserver(_js_helper.convertDartClosureToJS(internalCallback, 1)); observer.observe(div, {childList: true}); return (callback) => { dart.assert(storedCallback == null); _isolate_helper.enterJsAsync(); storedCallback = callback; div.firstChild ? div.removeChild(span) : div.appendChild(span); }; } else if (self.setImmediate != null) { return _AsyncRun[_scheduleImmediateWithSetImmediate]; } return _AsyncRun[_scheduleImmediateWithTimer]; } static [_scheduleImmediateJsOverride](callback) { // Function internalCallback: () → dynamic function internalCallback() { _isolate_helper.leaveJsAsync(); callback(); } ; _isolate_helper.enterJsAsync(); self.scheduleImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0)); } static [_scheduleImmediateWithSetImmediate](callback) { // Function internalCallback: () → dynamic function internalCallback() { _isolate_helper.leaveJsAsync(); callback(); } ; _isolate_helper.enterJsAsync(); self.setImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0)); } static [_scheduleImmediateWithTimer](callback) { Timer[_createTimer](core.Duration.ZERO, callback); } } dart.defineLazyProperties(_AsyncRun, { get scheduleImmediateClosure() { return _AsyncRun[_initializeScheduleImmediate](); } }); let StreamSubscription$ = dart.generic(function(T) { class StreamSubscription extends core.Object {} return StreamSubscription; }); let StreamSubscription = StreamSubscription$(); let EventSink$ = dart.generic(function(T) { class EventSink extends core.Object {} EventSink[dart.implements] = () => [core.Sink$(T)]; return EventSink; }); let EventSink = EventSink$(); let _stream = Symbol('_stream'); let StreamView$ = dart.generic(function(T) { class StreamView extends Stream$(T) { StreamView(stream$) { this[_stream] = stream$; super.Stream(); } get isBroadcast() { return this[_stream].isBroadcast; } asBroadcastStream(opts) { let onListen = opts && 'onListen' in opts ? opts.onListen : null; let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null; return this[_stream].asBroadcastStream({onListen: onListen, onCancel: onCancel}); } listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; return this[_stream].listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError}); } } return StreamView; }); let StreamView = StreamView$(); let StreamConsumer$ = dart.generic(function(S) { class StreamConsumer extends core.Object {} return StreamConsumer; }); let StreamConsumer = StreamConsumer$(); let StreamSink$ = dart.generic(function(S) { class StreamSink extends core.Object {} StreamSink[dart.implements] = () => [StreamConsumer$(S), EventSink$(S)]; return StreamSink; }); let StreamSink = StreamSink$(); let StreamTransformer$ = dart.generic(function(S, T) { class StreamTransformer extends core.Object { StreamTransformer(transformer) { return new _StreamSubscriptionTransformer(transformer); } fromHandlers(opts) { return new _StreamHandlerTransformer(opts); } } dart.defineNamedConstructor(StreamTransformer, 'fromHandlers'); return StreamTransformer; }); let StreamTransformer = StreamTransformer$(); let StreamIterator$ = dart.generic(function(T) { class StreamIterator extends core.Object { StreamIterator(stream) { return new (_StreamIteratorImpl$(T))(stream); } } return StreamIterator; }); let StreamIterator = StreamIterator$(); let _ControllerEventSinkWrapper$ = dart.generic(function(T) { class _ControllerEventSinkWrapper extends core.Object { _ControllerEventSinkWrapper(sink$) { this[_sink] = sink$; } add(data) { this[_sink].add(data); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; this[_sink].addError(error, stackTrace); } close() { this[_sink].close(); } } _ControllerEventSinkWrapper[dart.implements] = () => [EventSink$(T)]; return _ControllerEventSinkWrapper; }); let _ControllerEventSinkWrapper = _ControllerEventSinkWrapper$(); let StreamController$ = dart.generic(function(T) { class StreamController extends core.Object { StreamController(opts) { let onListen = opts && 'onListen' in opts ? opts.onListen : null; let onPause = opts && 'onPause' in opts ? opts.onPause : null; let onResume = opts && 'onResume' in opts ? opts.onResume : null; let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null; let sync = opts && 'sync' in opts ? opts.sync : false; if (dart.notNull(onListen == null) && dart.notNull(onPause == null) && dart.notNull(onResume == null) && dart.notNull(onCancel == null)) { return dart.as(sync ? new _NoCallbackSyncStreamController() : new _NoCallbackAsyncStreamController(), StreamController$(T)); } return sync ? new (_SyncStreamController$(T))(onListen, onPause, onResume, onCancel) : new (_AsyncStreamController$(T))(onListen, onPause, onResume, onCancel); } broadcast(opts) { let onListen = opts && 'onListen' in opts ? opts.onListen : null; let onCancel = opts && 'onCancel' in opts ? opts.onCancel : null; let sync = opts && 'sync' in opts ? opts.sync : false; return sync ? new (_SyncBroadcastStreamController$(T))(onListen, onCancel) : new (_AsyncBroadcastStreamController$(T))(onListen, onCancel); } } StreamController[dart.implements] = () => [StreamSink$(T)]; dart.defineNamedConstructor(StreamController, 'broadcast'); return StreamController; }); let StreamController = StreamController$(); let _StreamControllerLifecycle$ = dart.generic(function(T) { class _StreamControllerLifecycle extends core.Object { [_recordPause](subscription) {} [_recordResume](subscription) {} [_recordCancel](subscription) { return null; } } return _StreamControllerLifecycle; }); let _StreamControllerLifecycle = _StreamControllerLifecycle$(); let _varData = Symbol('_varData'); let _STATE_SUBSCRIBED = Symbol('_STATE_SUBSCRIBED'); let _isInitialState = Symbol('_isInitialState'); let _STATE_SUBSCRIPTION_MASK = Symbol('_STATE_SUBSCRIPTION_MASK'); let _subscription = Symbol('_subscription'); let _pendingEvents = Symbol('_pendingEvents'); let _ensurePendingEvents = Symbol('_ensurePendingEvents'); let _badEventState = Symbol('_badEventState'); let _nullFuture = Symbol('_nullFuture'); let _StreamController$ = dart.generic(function(T) { class _StreamController extends core.Object { _StreamController() { this[_varData] = null; this[_state] = _StreamController[_STATE_INITIAL]; this[_doneFuture] = null; } get stream() { return dart.as(new _ControllerStream(this), Stream$(T)); } get sink() { return new (_StreamSinkWrapper$(T))(this); } get [_isCanceled]() { return (dart.notNull(this[_state]) & dart.notNull(_StreamController[_STATE_CANCELED])) != 0; } get hasListener() { return (dart.notNull(this[_state]) & dart.notNull(_StreamController[_STATE_SUBSCRIBED])) != 0; } get [_isInitialState]() { return (dart.notNull(this[_state]) & dart.notNull(_StreamController[_STATE_SUBSCRIPTION_MASK])) == _StreamController[_STATE_INITIAL]; } get isClosed() { return (dart.notNull(this[_state]) & dart.notNull(_StreamController[_STATE_CLOSED])) != 0; } get isPaused() { return this.hasListener ? this[_subscription][_isInputPaused] : !dart.notNull(this[_isCanceled]); } get [_isAddingStream]() { return (dart.notNull(this[_state]) & dart.notNull(_StreamController[_STATE_ADDSTREAM])) != 0; } get [_mayAddEvent]() { return dart.notNull(this[_state]) < dart.notNull(_StreamController[_STATE_CLOSED]); } get [_pendingEvents]() { dart.assert(this[_isInitialState]); if (!dart.notNull(this[_isAddingStream])) { return dart.as(this[_varData], _PendingEvents); } let state = dart.as(this[_varData], _StreamControllerAddStreamState); return dart.as(state.varData, _PendingEvents); } [_ensurePendingEvents]() { dart.assert(this[_isInitialState]); if (!dart.notNull(this[_isAddingStream])) { if (this[_varData] == null) this[_varData] = new _StreamImplEvents(); return dart.as(this[_varData], _StreamImplEvents); } let state = dart.as(this[_varData], _StreamControllerAddStreamState); if (state.varData == null) state.varData = new _StreamImplEvents(); return dart.as(state.varData, _StreamImplEvents); } get [_subscription]() { dart.assert(this.hasListener); if (this[_isAddingStream]) { let addState = dart.as(this[_varData], _StreamControllerAddStreamState); return dart.as(addState.varData, _ControllerSubscription); } return dart.as(this[_varData], _ControllerSubscription); } [_badEventState]() { if (this.isClosed) { return new core.StateError("Cannot add event after closing"); } dart.assert(this[_isAddingStream]); return new core.StateError("Cannot add event while adding a stream"); } addStream(source, opts) { let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true; if (!dart.notNull(this[_mayAddEvent])) throw this[_badEventState](); if (this[_isCanceled]) return new _Future.immediate(null); let addState = new _StreamControllerAddStreamState(this, this[_varData], source, cancelOnError); this[_varData] = addState; this[_state] = _StreamController[_STATE_ADDSTREAM]; return addState.addStreamFuture; } get done() { return this[_ensureDoneFuture](); } [_ensureDoneFuture]() { if (this[_doneFuture] == null) { this[_doneFuture] = this[_isCanceled] ? Future[_nullFuture] : new _Future(); } return this[_doneFuture]; } add(value) { if (!dart.notNull(this[_mayAddEvent])) throw this[_badEventState](); this[_add](value); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; error = _nonNullError(error); if (!dart.notNull(this[_mayAddEvent])) throw this[_badEventState](); let replacement = Zone.current.errorCallback(error, stackTrace); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } this[_addError](error, stackTrace); } close() { if (this.isClosed) { return this[_ensureDoneFuture](); } if (!dart.notNull(this[_mayAddEvent])) throw this[_badEventState](); this[_closeUnchecked](); return this[_ensureDoneFuture](); } [_closeUnchecked]() { this[_state] = _StreamController[_STATE_CLOSED]; if (this.hasListener) { this[_sendDone](); } else if (this[_isInitialState]) { this[_ensurePendingEvents]().add(new _DelayedDone()); } } [_add](value) { if (this.hasListener) { this[_sendData](value); } else if (this[_isInitialState]) { this[_ensurePendingEvents]().add(new (_DelayedData$(T))(value)); } } [_addError](error, stackTrace) { if (this.hasListener) { this[_sendError](error, stackTrace); } else if (this[_isInitialState]) { this[_ensurePendingEvents]().add(new _DelayedError(error, stackTrace)); } } [_close]() { dart.assert(this[_isAddingStream]); let addState = dart.as(this[_varData], _StreamControllerAddStreamState); this[_varData] = addState.varData; this[_state] = ~dart.notNull(_StreamController[_STATE_ADDSTREAM]); addState.complete(); } [_subscribe](onData, onError, onDone, cancelOnError) { if (!dart.notNull(this[_isInitialState])) { throw new core.StateError("Stream has already been listened to."); } let subscription = new _ControllerSubscription(this, onData, onError, onDone, cancelOnError); let pendingEvents = this[_pendingEvents]; this[_state] = _StreamController[_STATE_SUBSCRIBED]; if (this[_isAddingStream]) { let addState = dart.as(this[_varData], _StreamControllerAddStreamState); addState.varData = subscription; addState.resume(); } else { this[_varData] = subscription; } subscription[_setPendingEvents](pendingEvents); subscription[_guardCallback]((() => { _runGuarded(this[_onListen]); }).bind(this)); return dart.as(subscription, StreamSubscription$(T)); } [_recordCancel](subscription) { let result = null; if (this[_isAddingStream]) { let addState = dart.as(this[_varData], _StreamControllerAddStreamState); result = addState.cancel(); } this[_varData] = null; this[_state] = dart.notNull(this[_state]) & ~(dart.notNull(_StreamController[_STATE_SUBSCRIBED]) | dart.notNull(_StreamController[_STATE_ADDSTREAM])) | dart.notNull(_StreamController[_STATE_CANCELED]); if (this[_onCancel] != null) { if (result == null) { try { result = dart.as(this[_onCancel](), Future); } catch (e) { let s = dart.stackTrace(e); result = ((_$) => { _$[_asyncCompleteError](e, s); return _$; })(new _Future()); } } else { result = result.whenComplete(this[_onCancel]); } } // Function complete: () → void function complete() { if (dart.notNull(this[_doneFuture] != null) && dart.notNull(this[_doneFuture][_mayComplete])) { this[_doneFuture][_asyncComplete](null); } } if (result != null) { result = result.whenComplete(complete); } else { complete(); } return result; } [_recordPause](subscription) { if (this[_isAddingStream]) { let addState = dart.as(this[_varData], _StreamControllerAddStreamState); addState.pause(); } _runGuarded(this[_onPause]); } [_recordResume](subscription) { if (this[_isAddingStream]) { let addState = dart.as(this[_varData], _StreamControllerAddStreamState); addState.resume(); } _runGuarded(this[_onResume]); } } _StreamController[dart.implements] = () => [StreamController$(T), _StreamControllerLifecycle$(T), _EventSink$(T), _EventDispatch$(T)]; _StreamController._STATE_INITIAL = 0; _StreamController._STATE_SUBSCRIBED = 1; _StreamController._STATE_CANCELED = 2; _StreamController._STATE_SUBSCRIPTION_MASK = 3; _StreamController._STATE_CLOSED = 4; _StreamController._STATE_ADDSTREAM = 8; return _StreamController; }); let _StreamController = _StreamController$(); let _SyncStreamControllerDispatch$ = dart.generic(function(T) { class _SyncStreamControllerDispatch extends core.Object { [_sendData](data) { this[_subscription][_add](data); } [_sendError](error, stackTrace) { this[_subscription][_addError](error, stackTrace); } [_sendDone]() { this[_subscription][_close](); } } _SyncStreamControllerDispatch[dart.implements] = () => [_StreamController$(T)]; return _SyncStreamControllerDispatch; }); let _SyncStreamControllerDispatch = _SyncStreamControllerDispatch$(); let _AsyncStreamControllerDispatch$ = dart.generic(function(T) { class _AsyncStreamControllerDispatch extends core.Object { [_sendData](data) { this[_subscription][_addPending](new _DelayedData(data)); } [_sendError](error, stackTrace) { this[_subscription][_addPending](new _DelayedError(error, stackTrace)); } [_sendDone]() { this[_subscription][_addPending](new _DelayedDone()); } } _AsyncStreamControllerDispatch[dart.implements] = () => [_StreamController$(T)]; return _AsyncStreamControllerDispatch; }); let _AsyncStreamControllerDispatch = _AsyncStreamControllerDispatch$(); let _AsyncStreamController$ = dart.generic(function(T) { class _AsyncStreamController extends dart.mixin(_StreamController$(T), _AsyncStreamControllerDispatch$(T)) { _AsyncStreamController(onListen$, onPause$, onResume$, onCancel$) { this[_onListen] = onListen$; this[_onPause] = onPause$; this[_onResume] = onResume$; this[_onCancel] = onCancel$; super._StreamController(); } } return _AsyncStreamController; }); let _AsyncStreamController = _AsyncStreamController$(); let _SyncStreamController$ = dart.generic(function(T) { class _SyncStreamController extends dart.mixin(_StreamController$(T), _SyncStreamControllerDispatch$(T)) { _SyncStreamController(onListen$, onPause$, onResume$, onCancel$) { this[_onListen] = onListen$; this[_onPause] = onPause$; this[_onResume] = onResume$; this[_onCancel] = onCancel$; super._StreamController(); } } return _SyncStreamController; }); let _SyncStreamController = _SyncStreamController$(); class _NoCallbacks extends core.Object { get [_onListen]() { return null; } get [_onPause]() { return null; } get [_onResume]() { return null; } get [_onCancel]() { return null; } } class _NoCallbackAsyncStreamController extends dart.mixin(_AsyncStreamControllerDispatch, _NoCallbacks) {} class _NoCallbackSyncStreamController extends dart.mixin(_SyncStreamControllerDispatch, _NoCallbacks) {} class _NotificationHandler extends core.Function {} // Function _runGuarded: (() → dynamic) → Future function _runGuarded(notificationHandler) { if (notificationHandler == null) return null; try { let result = notificationHandler(); if (dart.is(result, Future)) return dart.as(result, Future); return null; } catch (e) { let s = dart.stackTrace(e); Zone.current.handleUncaughtError(e, s); } } let _target = Symbol('_target'); let _StreamSinkWrapper$ = dart.generic(function(T) { class _StreamSinkWrapper extends core.Object { _StreamSinkWrapper(target$) { this[_target] = target$; } add(data) { this[_target].add(data); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; this[_target].addError(error, stackTrace); } close() { return this[_target].close(); } addStream(source, opts) { let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : true; return this[_target].addStream(source, {cancelOnError: cancelOnError}); } get done() { return this[_target].done; } } _StreamSinkWrapper[dart.implements] = () => [StreamSink$(T)]; return _StreamSinkWrapper; }); let _StreamSinkWrapper = _StreamSinkWrapper$(); let _AddStreamState$ = dart.generic(function(T) { class _AddStreamState extends core.Object { _AddStreamState(controller, source, cancelOnError) { this.addStreamFuture = new _Future(); this.addSubscription = source.listen(controller[_add], {onError: dart.as(cancelOnError ? _AddStreamState.makeErrorHandler(controller) : controller[_addError], core.Function), onDone: controller[_close], cancelOnError: cancelOnError}); } static makeErrorHandler(controller) { return (e, s) => { controller[_addError](e, s); controller[_close](); }; } pause() { this.addSubscription.pause(); } resume() { this.addSubscription.resume(); } cancel() { let cancel = this.addSubscription.cancel(); if (cancel == null) { this.addStreamFuture[_asyncComplete](null); return null; } return cancel.whenComplete((() => { this.addStreamFuture[_asyncComplete](null); }).bind(this)); } complete() { this.addStreamFuture[_asyncComplete](null); } } return _AddStreamState; }); let _AddStreamState = _AddStreamState$(); let _StreamControllerAddStreamState$ = dart.generic(function(T) { class _StreamControllerAddStreamState extends _AddStreamState$(T) { _StreamControllerAddStreamState(controller, varData, source, cancelOnError) { this.varData = varData; super._AddStreamState(dart.as(controller, _EventSink$(T)), source, cancelOnError); if (controller.isPaused) { this.addSubscription.pause(); } } } return _StreamControllerAddStreamState; }); let _StreamControllerAddStreamState = _StreamControllerAddStreamState$(); let _EventSink$ = dart.generic(function(T) { class _EventSink extends core.Object {} return _EventSink; }); let _EventSink = _EventSink$(); let _EventDispatch$ = dart.generic(function(T) { class _EventDispatch extends core.Object {} return _EventDispatch; }); let _EventDispatch = _EventDispatch$(); class _EventGenerator extends core.Function {} let _isUsed = Symbol('_isUsed'); let _GeneratedStreamImpl$ = dart.generic(function(T) { class _GeneratedStreamImpl extends _StreamImpl$(T) { _GeneratedStreamImpl(pending$) { this[_pending] = pending$; this[_isUsed] = false; super._StreamImpl(); } [_createSubscription](onData, onError, onDone, cancelOnError) { if (this[_isUsed]) throw new core.StateError("Stream has already been listened to."); this[_isUsed] = true; return ((_$) => { _$[_setPendingEvents](this[_pending]()); return _$; }).bind(this)(new _BufferingStreamSubscription(onData, onError, onDone, cancelOnError)); } } return _GeneratedStreamImpl; }); let _GeneratedStreamImpl = _GeneratedStreamImpl$(); let _iterator = Symbol('_iterator'); let _STATE_UNSCHEDULED = Symbol('_STATE_UNSCHEDULED'); let _STATE_SCHEDULED = Symbol('_STATE_SCHEDULED'); let _eventScheduled = Symbol('_eventScheduled'); class _PendingEvents extends core.Object { _PendingEvents() { this[_state] = _PendingEvents[_STATE_UNSCHEDULED]; } get isScheduled() { return this[_state] == _PendingEvents[_STATE_SCHEDULED]; } get [_eventScheduled]() { return dart.notNull(this[_state]) >= dart.notNull(_PendingEvents[_STATE_SCHEDULED]); } schedule(dispatch) { if (this.isScheduled) return; dart.assert(!dart.notNull(this.isEmpty)); if (this[_eventScheduled]) { dart.assert(this[_state] == _PendingEvents[_STATE_CANCELED]); this[_state] = _PendingEvents[_STATE_SCHEDULED]; return; } scheduleMicrotask((() => { let oldState = this[_state]; this[_state] = _PendingEvents[_STATE_UNSCHEDULED]; if (oldState == _PendingEvents[_STATE_CANCELED]) return; this.handleNext(dispatch); }).bind(this)); this[_state] = _PendingEvents[_STATE_SCHEDULED]; } cancelSchedule() { if (this.isScheduled) this[_state] = _PendingEvents[_STATE_CANCELED]; } } _PendingEvents._STATE_UNSCHEDULED = 0; _PendingEvents._STATE_SCHEDULED = 1; _PendingEvents._STATE_CANCELED = 3; let _IterablePendingEvents$ = dart.generic(function(T) { class _IterablePendingEvents extends _PendingEvents { _IterablePendingEvents(data) { this[_iterator] = data[core.$iterator]; super._PendingEvents(); } get isEmpty() { return this[_iterator] == null; } handleNext(dispatch) { if (this[_iterator] == null) { throw new core.StateError("No events pending."); } let isDone = null; try { isDone = !dart.notNull(this[_iterator].moveNext()); } catch (e) { let s = dart.stackTrace(e); this[_iterator] = null; dispatch[_sendError](e, s); return; } if (!dart.notNull(isDone)) { dispatch[_sendData](this[_iterator].current); } else { this[_iterator] = null; dispatch[_sendDone](); } } clear() { if (this.isScheduled) this.cancelSchedule(); this[_iterator] = null; } } return _IterablePendingEvents; }); let _IterablePendingEvents = _IterablePendingEvents$(); let _DataHandler$ = dart.generic(function(T) { class _DataHandler extends core.Function {} return _DataHandler; }); let _DataHandler = _DataHandler$(); class _DoneHandler extends core.Function {} // Function _nullDataHandler: (dynamic) → void function _nullDataHandler(value) { } // Function _nullErrorHandler: (dynamic, [StackTrace]) → void function _nullErrorHandler(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; Zone.current.handleUncaughtError(error, stackTrace); } // Function _nullDoneHandler: () → void function _nullDoneHandler() { } class _DelayedEvent extends core.Object { _DelayedEvent() { this.next = null; } } let _DelayedData$ = dart.generic(function(T) { class _DelayedData extends _DelayedEvent { _DelayedData(value) { this.value = value; super._DelayedEvent(); } perform(dispatch) { dispatch[_sendData](this.value); } } return _DelayedData; }); let _DelayedData = _DelayedData$(); class _DelayedError extends _DelayedEvent { _DelayedError(error, stackTrace) { this.error = error; this.stackTrace = stackTrace; super._DelayedEvent(); } perform(dispatch) { dispatch[_sendError](this.error, this.stackTrace); } } class _DelayedDone extends core.Object { _DelayedDone() { } perform(dispatch) { dispatch[_sendDone](); } get next() { return null; } set next(_) { throw new core.StateError("No events after a done."); } } _DelayedDone[dart.implements] = () => [_DelayedEvent]; class _StreamImplEvents extends _PendingEvents { _StreamImplEvents() { this.firstPendingEvent = null; this.lastPendingEvent = null; super._PendingEvents(); } get isEmpty() { return this.lastPendingEvent == null; } add(event) { if (this.lastPendingEvent == null) { this.firstPendingEvent = this.lastPendingEvent = event; } else { this.lastPendingEvent = this.lastPendingEvent.next = event; } } handleNext(dispatch) { dart.assert(!dart.notNull(this.isScheduled)); let event = this.firstPendingEvent; this.firstPendingEvent = event.next; if (this.firstPendingEvent == null) { this.lastPendingEvent = null; } event.perform(dispatch); } clear() { if (this.isScheduled) this.cancelSchedule(); this.firstPendingEvent = this.lastPendingEvent = null; } } let _unlink = Symbol('_unlink'); let _insertBefore = Symbol('_insertBefore'); class _BroadcastLinkedList extends core.Object { _BroadcastLinkedList() { this[_next] = null; this[_previous] = null; } [_unlink]() { this[_previous][_next] = this[_next]; this[_next][_previous] = this[_previous]; this[_next] = this[_previous] = this; } [_insertBefore](newNext) { let newPrevious = newNext[_previous]; newPrevious[_next] = this; newNext[_previous] = this[_previous]; this[_previous][_next] = newNext; this[_previous] = newPrevious; } } class _broadcastCallback extends core.Function {} let _schedule = Symbol('_schedule'); let _isSent = Symbol('_isSent'); let _DONE_SENT = Symbol('_DONE_SENT'); let _isScheduled = Symbol('_isScheduled'); let _SCHEDULED = Symbol('_SCHEDULED'); let _PAUSED = Symbol('_PAUSED'); let _DoneStreamSubscription$ = dart.generic(function(T) { class _DoneStreamSubscription extends core.Object { _DoneStreamSubscription(onDone$) { this[_onDone] = onDone$; this[_zone] = Zone.current; this[_state] = 0; this[_schedule](); } get [_isSent]() { return (dart.notNull(this[_state]) & dart.notNull(_DoneStreamSubscription[_DONE_SENT])) != 0; } get [_isScheduled]() { return (dart.notNull(this[_state]) & dart.notNull(_DoneStreamSubscription[_SCHEDULED])) != 0; } get isPaused() { return dart.notNull(this[_state]) >= dart.notNull(_DoneStreamSubscription[_PAUSED]); } [_schedule]() { if (this[_isScheduled]) return; this[_zone].scheduleMicrotask(this[_sendDone]); this[_state] = _DoneStreamSubscription[_SCHEDULED]; } onData(handleData) {} onError(handleError) {} onDone(handleDone) { this[_onDone] = handleDone; } pause(resumeSignal) { if (resumeSignal === void 0) resumeSignal = null; this[_state] = _DoneStreamSubscription[_PAUSED]; if (resumeSignal != null) resumeSignal.whenComplete(this.resume); } resume() { if (this.isPaused) { this[_state] = _DoneStreamSubscription[_PAUSED]; if (!dart.notNull(this.isPaused) && !dart.notNull(this[_isSent])) { this[_schedule](); } } } cancel() { return null; } asFuture(futureValue) { if (futureValue === void 0) futureValue = null; let result = new _Future(); this[_onDone] = () => { result[_completeWithValue](null); }; return result; } [_sendDone]() { this[_state] = ~dart.notNull(_DoneStreamSubscription[_SCHEDULED]); if (this.isPaused) return; this[_state] = _DoneStreamSubscription[_DONE_SENT]; if (this[_onDone] != null) this[_zone].runGuarded(this[_onDone]); } } _DoneStreamSubscription[dart.implements] = () => [StreamSubscription$(T)]; _DoneStreamSubscription._DONE_SENT = 1; _DoneStreamSubscription._SCHEDULED = 2; _DoneStreamSubscription._PAUSED = 4; return _DoneStreamSubscription; }); let _DoneStreamSubscription = _DoneStreamSubscription$(); let _source = Symbol('_source'); let _onListenHandler = Symbol('_onListenHandler'); let _onCancelHandler = Symbol('_onCancelHandler'); let _cancelSubscription = Symbol('_cancelSubscription'); let _pauseSubscription = Symbol('_pauseSubscription'); let _resumeSubscription = Symbol('_resumeSubscription'); let _isSubscriptionPaused = Symbol('_isSubscriptionPaused'); let _AsBroadcastStream$ = dart.generic(function(T) { class _AsBroadcastStream extends Stream$(T) { _AsBroadcastStream(source$, onListenHandler, onCancelHandler) { this[_source] = source$; this[_onListenHandler] = dart.as(Zone.current.registerUnaryCallback(onListenHandler), _broadcastCallback); this[_onCancelHandler] = dart.as(Zone.current.registerUnaryCallback(onCancelHandler), _broadcastCallback); this[_zone] = Zone.current; this[_controller] = null; this[_subscription] = null; super.Stream(); this[_controller] = new (_AsBroadcastStreamController$(T))(this[_onListen], this[_onCancel]); } get isBroadcast() { return true; } listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; if (dart.notNull(this[_controller] == null) || dart.notNull(this[_controller].isClosed)) { return new (_DoneStreamSubscription$(T))(onDone); } if (this[_subscription] == null) { this[_subscription] = this[_source].listen(this[_controller].add, {onError: this[_controller].addError, onDone: this[_controller].close}); } cancelOnError = core.identical(true, cancelOnError); return this[_controller][_subscribe](onData, onError, onDone, cancelOnError); } [_onCancel]() { let shutdown = dart.notNull(this[_controller] == null) || dart.notNull(this[_controller].isClosed); if (this[_onCancelHandler] != null) { this[_zone].runUnary(this[_onCancelHandler], new _BroadcastSubscriptionWrapper(this)); } if (shutdown) { if (this[_subscription] != null) { this[_subscription].cancel(); this[_subscription] = null; } } } [_onListen]() { if (this[_onListenHandler] != null) { this[_zone].runUnary(this[_onListenHandler], new _BroadcastSubscriptionWrapper(this)); } } [_cancelSubscription]() { if (this[_subscription] == null) return; let subscription = this[_subscription]; this[_subscription] = null; this[_controller] = null; subscription.cancel(); } [_pauseSubscription](resumeSignal) { if (this[_subscription] == null) return; this[_subscription].pause(resumeSignal); } [_resumeSubscription]() { if (this[_subscription] == null) return; this[_subscription].resume(); } get [_isSubscriptionPaused]() { if (this[_subscription] == null) return false; return this[_subscription].isPaused; } } return _AsBroadcastStream; }); let _AsBroadcastStream = _AsBroadcastStream$(); let _BroadcastSubscriptionWrapper$ = dart.generic(function(T) { class _BroadcastSubscriptionWrapper extends core.Object { _BroadcastSubscriptionWrapper(stream$) { this[_stream] = stream$; } onData(handleData) { throw new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."); } onError(handleError) { throw new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."); } onDone(handleDone) { throw new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."); } pause(resumeSignal) { if (resumeSignal === void 0) resumeSignal = null; this[_stream][_pauseSubscription](resumeSignal); } resume() { this[_stream][_resumeSubscription](); } cancel() { this[_stream][_cancelSubscription](); return null; } get isPaused() { return this[_stream][_isSubscriptionPaused]; } asFuture(futureValue) { if (futureValue === void 0) futureValue = null; throw new core.UnsupportedError("Cannot change handlers of asBroadcastStream source subscription."); } } _BroadcastSubscriptionWrapper[dart.implements] = () => [StreamSubscription$(T)]; return _BroadcastSubscriptionWrapper; }); let _BroadcastSubscriptionWrapper = _BroadcastSubscriptionWrapper$(); let _current = Symbol('_current'); let _futureOrPrefetch = Symbol('_futureOrPrefetch'); let _STATE_FOUND = Symbol('_STATE_FOUND'); let _STATE_DONE = Symbol('_STATE_DONE'); let _STATE_MOVING = Symbol('_STATE_MOVING'); let _STATE_EXTRA_DATA = Symbol('_STATE_EXTRA_DATA'); let _STATE_EXTRA_ERROR = Symbol('_STATE_EXTRA_ERROR'); let _clear = Symbol('_clear'); let _STATE_EXTRA_DONE = Symbol('_STATE_EXTRA_DONE'); let _StreamIteratorImpl$ = dart.generic(function(T) { class _StreamIteratorImpl extends core.Object { _StreamIteratorImpl(stream) { this[_subscription] = null; this[_current] = null; this[_futureOrPrefetch] = null; this[_state] = _StreamIteratorImpl[_STATE_FOUND]; this[_subscription] = stream.listen(this[_onData], {onError: this[_onError], onDone: this[_onDone], cancelOnError: true}); } get current() { return this[_current]; } moveNext() { if (this[_state] == _StreamIteratorImpl[_STATE_DONE]) { return new _Future$(core.bool).immediate(false); } if (this[_state] == _StreamIteratorImpl[_STATE_MOVING]) { throw new core.StateError("Already waiting for next."); } if (this[_state] == _StreamIteratorImpl[_STATE_FOUND]) { this[_state] = _StreamIteratorImpl[_STATE_MOVING]; this[_current] = null; this[_futureOrPrefetch] = new (_Future$(core.bool))(); return dart.as(this[_futureOrPrefetch], Future$(core.bool)); } else { dart.assert(dart.notNull(this[_state]) >= dart.notNull(_StreamIteratorImpl[_STATE_EXTRA_DATA])); switch (this[_state]) { case _StreamIteratorImpl[_STATE_EXTRA_DATA]: { this[_state] = _StreamIteratorImpl[_STATE_FOUND]; this[_current] = dart.as(this[_futureOrPrefetch], T); this[_futureOrPrefetch] = null; this[_subscription].resume(); return new _Future$(core.bool).immediate(true); } case _StreamIteratorImpl[_STATE_EXTRA_ERROR]: { let prefetch = dart.as(this[_futureOrPrefetch], AsyncError); this[_clear](); return new _Future$(core.bool).immediateError(prefetch.error, prefetch.stackTrace); } case _StreamIteratorImpl[_STATE_EXTRA_DONE]: { this[_clear](); return new _Future$(core.bool).immediate(false); } } } } [_clear]() { this[_subscription] = null; this[_futureOrPrefetch] = null; this[_current] = null; this[_state] = _StreamIteratorImpl[_STATE_DONE]; } cancel() { let subscription = this[_subscription]; if (this[_state] == _StreamIteratorImpl[_STATE_MOVING]) { let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool)); this[_clear](); hasNext[_complete](false); } else { this[_clear](); } return subscription.cancel(); } [_onData](data) { if (this[_state] == _StreamIteratorImpl[_STATE_MOVING]) { this[_current] = data; let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool)); this[_futureOrPrefetch] = null; this[_state] = _StreamIteratorImpl[_STATE_FOUND]; hasNext[_complete](true); return; } this[_subscription].pause(); dart.assert(this[_futureOrPrefetch] == null); this[_futureOrPrefetch] = data; this[_state] = _StreamIteratorImpl[_STATE_EXTRA_DATA]; } [_onError](error, stackTrace) { if (stackTrace === void 0) stackTrace = null; if (this[_state] == _StreamIteratorImpl[_STATE_MOVING]) { let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool)); this[_clear](); hasNext[_completeError](error, stackTrace); return; } this[_subscription].pause(); dart.assert(this[_futureOrPrefetch] == null); this[_futureOrPrefetch] = new AsyncError(error, stackTrace); this[_state] = _StreamIteratorImpl[_STATE_EXTRA_ERROR]; } [_onDone]() { if (this[_state] == _StreamIteratorImpl[_STATE_MOVING]) { let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool)); this[_clear](); hasNext[_complete](false); return; } this[_subscription].pause(); this[_futureOrPrefetch] = null; this[_state] = _StreamIteratorImpl[_STATE_EXTRA_DONE]; } } _StreamIteratorImpl[dart.implements] = () => [StreamIterator$(T)]; _StreamIteratorImpl._STATE_FOUND = 0; _StreamIteratorImpl._STATE_DONE = 1; _StreamIteratorImpl._STATE_MOVING = 2; _StreamIteratorImpl._STATE_EXTRA_DATA = 3; _StreamIteratorImpl._STATE_EXTRA_ERROR = 4; _StreamIteratorImpl._STATE_EXTRA_DONE = 5; return _StreamIteratorImpl; }); let _StreamIteratorImpl = _StreamIteratorImpl$(); // Function _runUserCode: (() → dynamic, (dynamic) → dynamic, (dynamic, StackTrace) → dynamic) → dynamic function _runUserCode(userCode, onSuccess, onError) { try { dart.dinvokef(onSuccess, userCode()); } catch (e) { let s = dart.stackTrace(e); let replacement = Zone.current.errorCallback(e, s); if (replacement == null) { dart.dinvokef(onError, e, s); } else { let error = _nonNullError(replacement.error); let stackTrace = replacement.stackTrace; dart.dinvokef(onError, error, stackTrace); } } } // Function _cancelAndError: (StreamSubscription, _Future, dynamic, StackTrace) → void function _cancelAndError(subscription, future, error, stackTrace) { let cancelFuture = subscription.cancel(); if (dart.is(cancelFuture, Future)) { cancelFuture.whenComplete(() => future[_completeError](error, stackTrace)); } else { future[_completeError](error, stackTrace); } } // Function _cancelAndErrorWithReplacement: (StreamSubscription, _Future, dynamic, StackTrace) → void function _cancelAndErrorWithReplacement(subscription, future, error, stackTrace) { let replacement = Zone.current.errorCallback(error, stackTrace); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } _cancelAndError(subscription, future, error, stackTrace); } // Function _cancelAndErrorClosure: (StreamSubscription, _Future) → dynamic function _cancelAndErrorClosure(subscription, future) { return (error, stackTrace) => _cancelAndError(subscription, future, error, stackTrace); } // Function _cancelAndValue: (StreamSubscription, _Future, dynamic) → void function _cancelAndValue(subscription, future, value) { let cancelFuture = subscription.cancel(); if (dart.is(cancelFuture, Future)) { cancelFuture.whenComplete(() => future[_complete](value)); } else { future[_complete](value); } } let _handleData = Symbol('_handleData'); let _handleError = Symbol('_handleError'); let _handleDone = Symbol('_handleDone'); let _ForwardingStream$ = dart.generic(function(S, T) { class _ForwardingStream extends Stream$(T) { _ForwardingStream(source$) { this[_source] = source$; super.Stream(); } get isBroadcast() { return this[_source].isBroadcast; } listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; cancelOnError = core.identical(true, cancelOnError); return this[_createSubscription](onData, onError, onDone, cancelOnError); } [_createSubscription](onData, onError, onDone, cancelOnError) { return new (_ForwardingStreamSubscription$(S, T))(this, onData, onError, onDone, cancelOnError); } [_handleData](data, sink) { let outputData = data; sink[_add](outputData); } [_handleError](error, stackTrace, sink) { sink[_addError](error, stackTrace); } [_handleDone](sink) { sink[_close](); } } return _ForwardingStream; }); let _ForwardingStream = _ForwardingStream$(); let _ForwardingStreamSubscription$ = dart.generic(function(S, T) { class _ForwardingStreamSubscription extends _BufferingStreamSubscription$(T) { _ForwardingStreamSubscription(stream$, onData, onError, onDone, cancelOnError) { this[_stream] = stream$; this[_subscription] = null; super._BufferingStreamSubscription(onData, onError, onDone, cancelOnError); this[_subscription] = this[_stream][_source].listen(this[_handleData], {onError: this[_handleError], onDone: this[_handleDone]}); } [_add](data) { if (this[_isClosed]) return; super[_add](data); } [_addError](error, stackTrace) { if (this[_isClosed]) return; super[_addError](error, stackTrace); } [_onPause]() { if (this[_subscription] == null) return; this[_subscription].pause(); } [_onResume]() { if (this[_subscription] == null) return; this[_subscription].resume(); } [_onCancel]() { if (this[_subscription] != null) { let subscription = this[_subscription]; this[_subscription] = null; subscription.cancel(); } return null; } [_handleData](data) { this[_stream][_handleData](data, this); } [_handleError](error, stackTrace) { this[_stream][_handleError](error, stackTrace, this); } [_handleDone]() { this[_stream][_handleDone](this); } } return _ForwardingStreamSubscription; }); let _ForwardingStreamSubscription = _ForwardingStreamSubscription$(); let _Predicate$ = dart.generic(function(T) { class _Predicate extends core.Function {} return _Predicate; }); let _Predicate = _Predicate$(); // Function _addErrorWithReplacement: (_EventSink, dynamic, dynamic) → void function _addErrorWithReplacement(sink, error, stackTrace) { let replacement = Zone.current.errorCallback(error, dart.as(stackTrace, core.StackTrace)); if (replacement != null) { error = _nonNullError(replacement.error); stackTrace = replacement.stackTrace; } sink[_addError](error, dart.as(stackTrace, core.StackTrace)); } let _test = Symbol('_test'); let _WhereStream$ = dart.generic(function(T) { class _WhereStream extends _ForwardingStream$(T, T) { _WhereStream(source, test) { this[_test] = test; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { let satisfies = null; try { satisfies = this[_test](inputEvent); } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); return; } if (satisfies) { sink[_add](inputEvent); } } } return _WhereStream; }); let _WhereStream = _WhereStream$(); let _Transformation$ = dart.generic(function(S, T) { class _Transformation extends core.Function {} return _Transformation; }); let _Transformation = _Transformation$(); let _transform = Symbol('_transform'); let _MapStream$ = dart.generic(function(S, T) { class _MapStream extends _ForwardingStream$(S, T) { _MapStream(source, transform) { this[_transform] = transform; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { let outputEvent = null; try { outputEvent = dart.as(dart.dinvokef(this[_transform], inputEvent), T); } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); return; } sink[_add](outputEvent); } } return _MapStream; }); let _MapStream = _MapStream$(); let _expand = Symbol('_expand'); let _ExpandStream$ = dart.generic(function(S, T) { class _ExpandStream extends _ForwardingStream$(S, T) { _ExpandStream(source, expand) { this[_expand] = expand; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { try { for (let value of this[_expand](inputEvent)) { sink[_add](value); } } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); } } } return _ExpandStream; }); let _ExpandStream = _ExpandStream$(); class _ErrorTest extends core.Function {} let _HandleErrorStream$ = dart.generic(function(T) { class _HandleErrorStream extends _ForwardingStream$(T, T) { _HandleErrorStream(source, onError, test) { this[_transform] = onError; this[_test] = test; super._ForwardingStream(source); } [_handleError](error, stackTrace, sink) { let matches = true; if (this[_test] != null) { try { matches = dart.dinvokef(this[_test], error); } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); return; } } if (matches) { try { _invokeErrorHandler(this[_transform], error, stackTrace); } catch (e) { let s = dart.stackTrace(e); if (core.identical(e, error)) { sink[_addError](error, stackTrace); } else { _addErrorWithReplacement(sink, e, s); } return; } } else { sink[_addError](error, stackTrace); } } } return _HandleErrorStream; }); let _HandleErrorStream = _HandleErrorStream$(); let _remaining = Symbol('_remaining'); let _TakeStream$ = dart.generic(function(T) { class _TakeStream extends _ForwardingStream$(T, T) { _TakeStream(source, count) { this[_remaining] = count; super._ForwardingStream(source); if (!(typeof count == 'number')) throw new core.ArgumentError(count); } [_handleData](inputEvent, sink) { if (dart.notNull(this[_remaining]) > 0) { sink[_add](inputEvent); this[_remaining] = 1; if (this[_remaining] == 0) { sink[_close](); } } } } return _TakeStream; }); let _TakeStream = _TakeStream$(); let _TakeWhileStream$ = dart.generic(function(T) { class _TakeWhileStream extends _ForwardingStream$(T, T) { _TakeWhileStream(source, test) { this[_test] = test; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { let satisfies = null; try { satisfies = this[_test](inputEvent); } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); sink[_close](); return; } if (satisfies) { sink[_add](inputEvent); } else { sink[_close](); } } } return _TakeWhileStream; }); let _TakeWhileStream = _TakeWhileStream$(); let _SkipStream$ = dart.generic(function(T) { class _SkipStream extends _ForwardingStream$(T, T) { _SkipStream(source, count) { this[_remaining] = count; super._ForwardingStream(source); if (dart.notNull(!(typeof count == 'number')) || dart.notNull(count) < 0) throw new core.ArgumentError(count); } [_handleData](inputEvent, sink) { if (dart.notNull(this[_remaining]) > 0) { this[_remaining] = dart.notNull(this[_remaining]) - 1; return; } sink[_add](inputEvent); } } return _SkipStream; }); let _SkipStream = _SkipStream$(); let _hasFailed = Symbol('_hasFailed'); let _SkipWhileStream$ = dart.generic(function(T) { class _SkipWhileStream extends _ForwardingStream$(T, T) { _SkipWhileStream(source, test) { this[_test] = test; this[_hasFailed] = false; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { if (this[_hasFailed]) { sink[_add](inputEvent); return; } let satisfies = null; try { satisfies = this[_test](inputEvent); } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); this[_hasFailed] = true; return; } if (!dart.notNull(satisfies)) { this[_hasFailed] = true; sink[_add](inputEvent); } } } return _SkipWhileStream; }); let _SkipWhileStream = _SkipWhileStream$(); let _Equality$ = dart.generic(function(T) { class _Equality extends core.Function {} return _Equality; }); let _Equality = _Equality$(); let _SENTINEL = Symbol('_SENTINEL'); let _equals = Symbol('_equals'); let _DistinctStream$ = dart.generic(function(T) { class _DistinctStream extends _ForwardingStream$(T, T) { _DistinctStream(source, equals) { this[_previous] = _DistinctStream[_SENTINEL]; this[_equals] = equals; super._ForwardingStream(source); } [_handleData](inputEvent, sink) { if (core.identical(this[_previous], _DistinctStream[_SENTINEL])) { this[_previous] = inputEvent; return sink[_add](inputEvent); } else { let isEqual = null; try { if (this[_equals] == null) { isEqual = dart.equals(this[_previous], inputEvent); } else { isEqual = this[_equals](dart.as(this[_previous], T), inputEvent); } } catch (e) { let s = dart.stackTrace(e); _addErrorWithReplacement(sink, e, s); return null; } if (!dart.notNull(isEqual)) { sink[_add](inputEvent); this[_previous] = inputEvent; } } } } dart.defineLazyProperties(_DistinctStream, { get _SENTINEL() { return new core.Object(); }, set _SENTINEL(_) {} }); return _DistinctStream; }); let _DistinctStream = _DistinctStream$(); let _EventSinkWrapper$ = dart.generic(function(T) { class _EventSinkWrapper extends core.Object { _EventSinkWrapper(sink$) { this[_sink] = sink$; } add(data) { this[_sink][_add](data); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; this[_sink][_addError](error, stackTrace); } close() { this[_sink][_close](); } } _EventSinkWrapper[dart.implements] = () => [EventSink$(T)]; return _EventSinkWrapper; }); let _EventSinkWrapper = _EventSinkWrapper$(); let _transformerSink = Symbol('_transformerSink'); let _isSubscribed = Symbol('_isSubscribed'); let _SinkTransformerStreamSubscription$ = dart.generic(function(S, T) { class _SinkTransformerStreamSubscription extends _BufferingStreamSubscription$(T) { _SinkTransformerStreamSubscription(source, mapper, onData, onError, onDone, cancelOnError) { this[_transformerSink] = null; this[_subscription] = null; super._BufferingStreamSubscription(onData, onError, onDone, cancelOnError); let eventSink = new (_EventSinkWrapper$(T))(this); this[_transformerSink] = mapper(eventSink); this[_subscription] = source.listen(this[_handleData], {onError: this[_handleError], onDone: this[_handleDone]}); } get [_isSubscribed]() { return this[_subscription] != null; } [_add](data) { if (this[_isClosed]) { throw new core.StateError("Stream is already closed"); } super[_add](data); } [_addError](error, stackTrace) { if (this[_isClosed]) { throw new core.StateError("Stream is already closed"); } super[_addError](error, stackTrace); } [_close]() { if (this[_isClosed]) { throw new core.StateError("Stream is already closed"); } super[_close](); } [_onPause]() { if (this[_isSubscribed]) this[_subscription].pause(); } [_onResume]() { if (this[_isSubscribed]) this[_subscription].resume(); } [_onCancel]() { if (this[_isSubscribed]) { let subscription = this[_subscription]; this[_subscription] = null; subscription.cancel(); } return null; } [_handleData](data) { try { this[_transformerSink].add(data); } catch (e) { let s = dart.stackTrace(e); this[_addError](e, s); } } [_handleError](error, stackTrace) { if (stackTrace === void 0) stackTrace = null; try { this[_transformerSink].addError(error, dart.as(stackTrace, core.StackTrace)); } catch (e) { let s = dart.stackTrace(e); if (core.identical(e, error)) { this[_addError](error, dart.as(stackTrace, core.StackTrace)); } else { this[_addError](e, s); } } } [_handleDone]() { try { this[_subscription] = null; this[_transformerSink].close(); } catch (e) { let s = dart.stackTrace(e); this[_addError](e, s); } } } return _SinkTransformerStreamSubscription; }); let _SinkTransformerStreamSubscription = _SinkTransformerStreamSubscription$(); let _SinkMapper$ = dart.generic(function(S, T) { class _SinkMapper extends core.Function {} return _SinkMapper; }); let _SinkMapper = _SinkMapper$(); let _sinkMapper = Symbol('_sinkMapper'); let _StreamSinkTransformer$ = dart.generic(function(S, T) { class _StreamSinkTransformer extends core.Object { _StreamSinkTransformer(sinkMapper) { this[_sinkMapper] = sinkMapper; } bind(stream) { return new (_BoundSinkStream$(S, T))(stream, this[_sinkMapper]); } } _StreamSinkTransformer[dart.implements] = () => [StreamTransformer$(S, T)]; return _StreamSinkTransformer; }); let _StreamSinkTransformer = _StreamSinkTransformer$(); let _BoundSinkStream$ = dart.generic(function(S, T) { class _BoundSinkStream extends Stream$(T) { get isBroadcast() { return this[_stream].isBroadcast; } _BoundSinkStream(stream$, sinkMapper) { this[_stream] = stream$; this[_sinkMapper] = sinkMapper; super.Stream(); } listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; cancelOnError = core.identical(true, cancelOnError); let subscription = new _SinkTransformerStreamSubscription(this[_stream], dart.as(this[_sinkMapper], _SinkMapper), onData, onError, onDone, cancelOnError); return subscription; } } return _BoundSinkStream; }); let _BoundSinkStream = _BoundSinkStream$(); let _TransformDataHandler$ = dart.generic(function(S, T) { class _TransformDataHandler extends core.Function {} return _TransformDataHandler; }); let _TransformDataHandler = _TransformDataHandler$(); let _TransformErrorHandler$ = dart.generic(function(T) { class _TransformErrorHandler extends core.Function {} return _TransformErrorHandler; }); let _TransformErrorHandler = _TransformErrorHandler$(); let _TransformDoneHandler$ = dart.generic(function(T) { class _TransformDoneHandler extends core.Function {} return _TransformDoneHandler; }); let _TransformDoneHandler = _TransformDoneHandler$(); let _HandlerEventSink$ = dart.generic(function(S, T) { class _HandlerEventSink extends core.Object { _HandlerEventSink(handleData$, handleError$, handleDone$, sink$) { this[_handleData] = handleData$; this[_handleError] = handleError$; this[_handleDone] = handleDone$; this[_sink] = sink$; } add(data) { return this[_handleData](data, this[_sink]); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; return this[_handleError](error, stackTrace, this[_sink]); } close() { return this[_handleDone](this[_sink]); } } _HandlerEventSink[dart.implements] = () => [EventSink$(S)]; return _HandlerEventSink; }); let _HandlerEventSink = _HandlerEventSink$(); let _defaultHandleData = Symbol('_defaultHandleData'); let _defaultHandleError = Symbol('_defaultHandleError'); let _defaultHandleDone = Symbol('_defaultHandleDone'); let _StreamHandlerTransformer$ = dart.generic(function(S, T) { class _StreamHandlerTransformer extends _StreamSinkTransformer$(S, T) { _StreamHandlerTransformer(opts) { let handleData = opts && 'handleData' in opts ? opts.handleData : null; let handleError = opts && 'handleError' in opts ? opts.handleError : null; let handleDone = opts && 'handleDone' in opts ? opts.handleDone : null; super._StreamSinkTransformer(dart.as((outputSink) => { if (handleData == null) handleData = dart.as(_StreamHandlerTransformer[_defaultHandleData], dart.throw_("Unimplemented type (S, EventSink) → void")); if (handleError == null) handleError = dart.as(_StreamHandlerTransformer[_defaultHandleError], dart.throw_("Unimplemented type (Object, StackTrace, EventSink) → void")); if (handleDone == null) handleDone = _StreamHandlerTransformer[_defaultHandleDone]; return new (_HandlerEventSink$(S, T))(handleData, handleError, handleDone, outputSink); }, _SinkMapper)); } bind(stream) { return super.bind(stream); } static [_defaultHandleData](data, sink) { sink.add(data); } static [_defaultHandleError](error, stackTrace, sink) { sink.addError(error); } static [_defaultHandleDone](sink) { sink.close(); } } return _StreamHandlerTransformer; }); let _StreamHandlerTransformer = _StreamHandlerTransformer$(); let _SubscriptionTransformer$ = dart.generic(function(S, T) { class _SubscriptionTransformer extends core.Function {} return _SubscriptionTransformer; }); let _SubscriptionTransformer = _SubscriptionTransformer$(); let _transformer = Symbol('_transformer'); let _StreamSubscriptionTransformer$ = dart.generic(function(S, T) { class _StreamSubscriptionTransformer extends core.Object { _StreamSubscriptionTransformer(transformer$) { this[_transformer] = transformer$; } bind(stream) { return new (_BoundSubscriptionStream$(S, T))(stream, this[_transformer]); } } _StreamSubscriptionTransformer[dart.implements] = () => [StreamTransformer$(S, T)]; return _StreamSubscriptionTransformer; }); let _StreamSubscriptionTransformer = _StreamSubscriptionTransformer$(); let _BoundSubscriptionStream$ = dart.generic(function(S, T) { class _BoundSubscriptionStream extends Stream$(T) { _BoundSubscriptionStream(stream$, transformer$) { this[_stream] = stream$; this[_transformer] = transformer$; super.Stream(); } listen(onData, opts) { let onError = opts && 'onError' in opts ? opts.onError : null; let onDone = opts && 'onDone' in opts ? opts.onDone : null; let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; cancelOnError = core.identical(true, cancelOnError); let result = this[_transformer](this[_stream], cancelOnError); result.onData(onData); result.onError(onError); result.onDone(onDone); return result; } } return _BoundSubscriptionStream; }); let _BoundSubscriptionStream = _BoundSubscriptionStream$(); let _createPeriodicTimer = Symbol('_createPeriodicTimer'); class Timer extends core.Object { Timer(duration, callback) { if (dart.equals(Zone.current, Zone.ROOT)) { return Zone.current.createTimer(duration, callback); } return Zone.current.createTimer(duration, Zone.current.bindCallback(callback, {runGuarded: true})); } periodic(duration, callback) { if (dart.equals(Zone.current, Zone.ROOT)) { return Zone.current.createPeriodicTimer(duration, callback); } return Zone.current.createPeriodicTimer(duration, dart.as(Zone.current.bindUnaryCallback(callback, {runGuarded: true}), dart.throw_("Unimplemented type (Timer) → void"))); } static run(callback) { new Timer(core.Duration.ZERO, callback); } static [_createTimer](duration, callback) { let milliseconds = duration.inMilliseconds; if (dart.notNull(milliseconds) < 0) milliseconds = 0; return new _isolate_helper.TimerImpl(milliseconds, callback); } static [_createPeriodicTimer](duration, callback) { let milliseconds = duration.inMilliseconds; if (dart.notNull(milliseconds) < 0) milliseconds = 0; return new _isolate_helper.TimerImpl.periodic(milliseconds, callback); } } dart.defineNamedConstructor(Timer, 'periodic'); class ZoneCallback extends core.Function {} class ZoneUnaryCallback extends core.Function {} class ZoneBinaryCallback extends core.Function {} class HandleUncaughtErrorHandler extends core.Function {} class RunHandler extends core.Function {} class RunUnaryHandler extends core.Function {} class RunBinaryHandler extends core.Function {} class RegisterCallbackHandler extends core.Function {} class RegisterUnaryCallbackHandler extends core.Function {} class RegisterBinaryCallbackHandler extends core.Function {} class ErrorCallbackHandler extends core.Function {} class ScheduleMicrotaskHandler extends core.Function {} class CreateTimerHandler extends core.Function {} class CreatePeriodicTimerHandler extends core.Function {} class PrintHandler extends core.Function {} class ForkHandler extends core.Function {} class _ZoneFunction extends core.Object { _ZoneFunction(zone, func) { this.zone = zone; this.function = func; } } class ZoneSpecification extends core.Object { ZoneSpecification(opts) { return new _ZoneSpecification(opts); } from(other, opts) { let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null; let run = opts && 'run' in opts ? opts.run : null; let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null; let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null; let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null; let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null; let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null; let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null; let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null; let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null; let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null; let print = opts && 'print' in opts ? opts.print : null; let fork = opts && 'fork' in opts ? opts.fork : null; return new ZoneSpecification({handleUncaughtError: dart.as(handleUncaughtError != null ? handleUncaughtError : other.handleUncaughtError, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, dynamic, StackTrace) → dynamic")), run: dart.as(run != null ? run : other.run, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, () → dynamic) → dynamic")), runUnary: dart.as(runUnary != null ? runUnary : other.runUnary, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic) → dynamic, dynamic) → dynamic")), runBinary: dart.as(runBinary != null ? runBinary : other.runBinary, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic, dynamic, dynamic) → dynamic")), registerCallback: dart.as(registerCallback != null ? registerCallback : other.registerCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, () → dynamic) → ZoneCallback")), registerUnaryCallback: dart.as(registerUnaryCallback != null ? registerUnaryCallback : other.registerUnaryCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic) → dynamic) → ZoneUnaryCallback")), registerBinaryCallback: dart.as(registerBinaryCallback != null ? registerBinaryCallback : other.registerBinaryCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic) → ZoneBinaryCallback")), errorCallback: dart.as(errorCallback != null ? errorCallback : other.errorCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, Object, StackTrace) → AsyncError")), scheduleMicrotask: dart.as(scheduleMicrotask != null ? scheduleMicrotask : other.scheduleMicrotask, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, () → dynamic) → void")), createTimer: dart.as(createTimer != null ? createTimer : other.createTimer, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, Duration, () → void) → Timer")), createPeriodicTimer: dart.as(createPeriodicTimer != null ? createPeriodicTimer : other.createPeriodicTimer, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, Duration, (Timer) → void) → Timer")), print: dart.as(print != null ? print : other.print, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, String) → void")), fork: dart.as(fork != null ? fork : other.fork, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, ZoneSpecification, Map) → Zone"))}); } } dart.defineNamedConstructor(ZoneSpecification, 'from'); class _ZoneSpecification extends core.Object { _ZoneSpecification(opts) { let handleUncaughtError = opts && 'handleUncaughtError' in opts ? opts.handleUncaughtError : null; let run = opts && 'run' in opts ? opts.run : null; let runUnary = opts && 'runUnary' in opts ? opts.runUnary : null; let runBinary = opts && 'runBinary' in opts ? opts.runBinary : null; let registerCallback = opts && 'registerCallback' in opts ? opts.registerCallback : null; let registerUnaryCallback = opts && 'registerUnaryCallback' in opts ? opts.registerUnaryCallback : null; let registerBinaryCallback = opts && 'registerBinaryCallback' in opts ? opts.registerBinaryCallback : null; let errorCallback = opts && 'errorCallback' in opts ? opts.errorCallback : null; let scheduleMicrotask = opts && 'scheduleMicrotask' in opts ? opts.scheduleMicrotask : null; let createTimer = opts && 'createTimer' in opts ? opts.createTimer : null; let createPeriodicTimer = opts && 'createPeriodicTimer' in opts ? opts.createPeriodicTimer : null; let print = opts && 'print' in opts ? opts.print : null; let fork = opts && 'fork' in opts ? opts.fork : null; this.handleUncaughtError = handleUncaughtError; this.run = run; this.runUnary = runUnary; this.runBinary = runBinary; this.registerCallback = registerCallback; this.registerUnaryCallback = registerUnaryCallback; this.registerBinaryCallback = registerBinaryCallback; this.errorCallback = errorCallback; this.scheduleMicrotask = scheduleMicrotask; this.createTimer = createTimer; this.createPeriodicTimer = createPeriodicTimer; this.print = print; this.fork = fork; } } _ZoneSpecification[dart.implements] = () => [ZoneSpecification]; class ZoneDelegate extends core.Object {} let _$ = Symbol('_'); class Zone extends core.Object { [_$]() { } static get current() { return Zone[_current]; } static [_enter](zone) { dart.assert(zone != null); dart.assert(!dart.notNull(core.identical(zone, Zone[_current]))); let previous = Zone[_current]; Zone[_current] = zone; return previous; } static [_leave](previous) { dart.assert(previous != null); Zone[_current] = previous; } } dart.defineNamedConstructor(Zone, _$); Zone.ROOT = _ROOT_ZONE; Zone._current = _ROOT_ZONE; let _delegate = Symbol('_delegate'); // Function _parentDelegate: (_Zone) → ZoneDelegate function _parentDelegate(zone) { if (zone.parent == null) return null; return zone.parent[_delegate]; } let _delegationTarget = Symbol('_delegationTarget'); let _handleUncaughtError = Symbol('_handleUncaughtError'); let _run = Symbol('_run'); let _runUnary = Symbol('_runUnary'); let _runBinary = Symbol('_runBinary'); let _registerCallback = Symbol('_registerCallback'); let _registerUnaryCallback = Symbol('_registerUnaryCallback'); let _registerBinaryCallback = Symbol('_registerBinaryCallback'); let _errorCallback = Symbol('_errorCallback'); let _scheduleMicrotask = Symbol('_scheduleMicrotask'); let _print = Symbol('_print'); let _fork = Symbol('_fork'); class _ZoneDelegate extends core.Object { _ZoneDelegate(delegationTarget) { this[_delegationTarget] = delegationTarget; } handleUncaughtError(zone, error, stackTrace) { let implementation = this[_delegationTarget][_handleUncaughtError]; let implZone = implementation.zone; return dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, error, stackTrace); } run(zone, f) { let implementation = this[_delegationTarget][_run]; let implZone = implementation.zone; return dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f); } runUnary(zone, f, arg) { let implementation = this[_delegationTarget][_runUnary]; let implZone = implementation.zone; return dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f, arg); } runBinary(zone, f, arg1, arg2) { let implementation = this[_delegationTarget][_runBinary]; let implZone = implementation.zone; return dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f, arg1, arg2); } registerCallback(zone, f) { let implementation = this[_delegationTarget][_registerCallback]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f), ZoneCallback); } registerUnaryCallback(zone, f) { let implementation = this[_delegationTarget][_registerUnaryCallback]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f), ZoneUnaryCallback); } registerBinaryCallback(zone, f) { let implementation = this[_delegationTarget][_registerBinaryCallback]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f), ZoneBinaryCallback); } errorCallback(zone, error, stackTrace) { let implementation = this[_delegationTarget][_errorCallback]; let implZone = implementation.zone; if (core.identical(implZone, _ROOT_ZONE)) return null; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, error, stackTrace), AsyncError); } scheduleMicrotask(zone, f) { let implementation = this[_delegationTarget][_scheduleMicrotask]; let implZone = implementation.zone; dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, f); } createTimer(zone, duration, f) { let implementation = this[_delegationTarget][_createTimer]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, duration, f), Timer); } createPeriodicTimer(zone, period, f) { let implementation = this[_delegationTarget][_createPeriodicTimer]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, period, f), Timer); } print(zone, line) { let implementation = this[_delegationTarget][_print]; let implZone = implementation.zone; dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, line); } fork(zone, specification, zoneValues) { let implementation = this[_delegationTarget][_fork]; let implZone = implementation.zone; return dart.as(dart.dinvokef(implementation.function, implZone, _parentDelegate(implZone), zone, specification, zoneValues), Zone); } } _ZoneDelegate[dart.implements] = () => [ZoneDelegate]; class _Zone extends core.Object { _Zone() { } inSameErrorZone(otherZone) { return dart.notNull(core.identical(this, otherZone)) || dart.notNull(core.identical(this.errorZone, otherZone.errorZone)); } } _Zone[dart.implements] = () => [Zone]; let _delegateCache = Symbol('_delegateCache'); let _map = Symbol('_map'); class _CustomZone extends _Zone { get [_delegate]() { if (this[_delegateCache] != null) return this[_delegateCache]; this[_delegateCache] = new _ZoneDelegate(this); return this[_delegateCache]; } _CustomZone(parent, specification, map) { this.parent = parent; this[_map] = map; this[_runUnary] = null; this[_run] = null; this[_runBinary] = null; this[_registerCallback] = null; this[_registerUnaryCallback] = null; this[_registerBinaryCallback] = null; this[_errorCallback] = null; this[_scheduleMicrotask] = null; this[_createTimer] = null; this[_createPeriodicTimer] = null; this[_print] = null; this[_fork] = null; this[_handleUncaughtError] = null; this[_delegateCache] = null; super._Zone(); this[_run] = specification.run != null ? new _ZoneFunction(this, specification.run) : this.parent[_run]; this[_runUnary] = specification.runUnary != null ? new _ZoneFunction(this, specification.runUnary) : this.parent[_runUnary]; this[_runBinary] = specification.runBinary != null ? new _ZoneFunction(this, specification.runBinary) : this.parent[_runBinary]; this[_registerCallback] = specification.registerCallback != null ? new _ZoneFunction(this, specification.registerCallback) : this.parent[_registerCallback]; this[_registerUnaryCallback] = specification.registerUnaryCallback != null ? new _ZoneFunction(this, specification.registerUnaryCallback) : this.parent[_registerUnaryCallback]; this[_registerBinaryCallback] = specification.registerBinaryCallback != null ? new _ZoneFunction(this, specification.registerBinaryCallback) : this.parent[_registerBinaryCallback]; this[_errorCallback] = specification.errorCallback != null ? new _ZoneFunction(this, specification.errorCallback) : this.parent[_errorCallback]; this[_scheduleMicrotask] = specification.scheduleMicrotask != null ? new _ZoneFunction(this, specification.scheduleMicrotask) : this.parent[_scheduleMicrotask]; this[_createTimer] = specification.createTimer != null ? new _ZoneFunction(this, specification.createTimer) : this.parent[_createTimer]; this[_createPeriodicTimer] = specification.createPeriodicTimer != null ? new _ZoneFunction(this, specification.createPeriodicTimer) : this.parent[_createPeriodicTimer]; this[_print] = specification.print != null ? new _ZoneFunction(this, specification.print) : this.parent[_print]; this[_fork] = specification.fork != null ? new _ZoneFunction(this, specification.fork) : this.parent[_fork]; this[_handleUncaughtError] = specification.handleUncaughtError != null ? new _ZoneFunction(this, specification.handleUncaughtError) : this.parent[_handleUncaughtError]; } get errorZone() { return this[_handleUncaughtError].zone; } runGuarded(f) { try { return this.run(f); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } runUnaryGuarded(f, arg) { try { return this.runUnary(f, arg); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } runBinaryGuarded(f, arg1, arg2) { try { return this.runBinary(f, arg1, arg2); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } bindCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; let registered = this.registerCallback(f); if (runGuarded) { return (() => this.runGuarded(registered)).bind(this); } else { return (() => this.run(registered)).bind(this); } } bindUnaryCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; let registered = this.registerUnaryCallback(f); if (runGuarded) { return ((arg) => this.runUnaryGuarded(registered, arg)).bind(this); } else { return ((arg) => this.runUnary(registered, arg)).bind(this); } } bindBinaryCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; let registered = this.registerBinaryCallback(f); if (runGuarded) { return ((arg1, arg2) => this.runBinaryGuarded(registered, arg1, arg2)).bind(this); } else { return ((arg1, arg2) => this.runBinary(registered, arg1, arg2)).bind(this); } } get(key) { let result = this[_map].get(key); if (dart.notNull(result != null) || dart.notNull(this[_map].containsKey(key))) return result; if (this.parent != null) { let value = this.parent.get(key); if (value != null) { this[_map].set(key, value); } return value; } dart.assert(dart.equals(this, _ROOT_ZONE)); return null; } handleUncaughtError(error, stackTrace) { let implementation = this[_handleUncaughtError]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, error, stackTrace); } fork(opts) { let specification = opts && 'specification' in opts ? opts.specification : null; let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null; let implementation = this[_fork]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, specification, zoneValues), Zone); } run(f) { let implementation = this[_run]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f); } runUnary(f, arg) { let implementation = this[_runUnary]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f, arg); } runBinary(f, arg1, arg2) { let implementation = this[_runBinary]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f, arg1, arg2); } registerCallback(f) { let implementation = this[_registerCallback]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f), ZoneCallback); } registerUnaryCallback(f) { let implementation = this[_registerUnaryCallback]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f), ZoneUnaryCallback); } registerBinaryCallback(f) { let implementation = this[_registerBinaryCallback]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f), ZoneBinaryCallback); } errorCallback(error, stackTrace) { let implementation = this[_errorCallback]; dart.assert(implementation != null); let implementationZone = implementation.zone; if (core.identical(implementationZone, _ROOT_ZONE)) return null; let parentDelegate = _parentDelegate(dart.as(implementationZone, _Zone)); return dart.as(dart.dinvokef(implementation.function, implementationZone, parentDelegate, this, error, stackTrace), AsyncError); } scheduleMicrotask(f) { let implementation = this[_scheduleMicrotask]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, f); } createTimer(duration, f) { let implementation = this[_createTimer]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, duration, f), Timer); } createPeriodicTimer(duration, f) { let implementation = this[_createPeriodicTimer]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.as(dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, duration, f), Timer); } print(line) { let implementation = this[_print]; dart.assert(implementation != null); let parentDelegate = _parentDelegate(implementation.zone); return dart.dinvokef(implementation.function, implementation.zone, parentDelegate, this, line); } } // Function _rootHandleUncaughtError: (Zone, ZoneDelegate, Zone, dynamic, StackTrace) → void function _rootHandleUncaughtError(self, parent, zone, error, stackTrace) { _schedulePriorityAsyncCallback(() => { throw new _UncaughtAsyncError(error, stackTrace); }); } // Function _rootRun: (Zone, ZoneDelegate, Zone, () → dynamic) → dynamic function _rootRun(self, parent, zone, f) { if (dart.equals(Zone[_current], zone)) return f(); let old = Zone[_enter](zone); try { return f(); } finally { Zone[_leave](old); } } // Function _rootRunUnary: (Zone, ZoneDelegate, Zone, (dynamic) → dynamic, dynamic) → dynamic function _rootRunUnary(self, parent, zone, f, arg) { if (dart.equals(Zone[_current], zone)) return dart.dinvokef(f, arg); let old = Zone[_enter](zone); try { return dart.dinvokef(f, arg); } finally { Zone[_leave](old); } } // Function _rootRunBinary: (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic, dynamic, dynamic) → dynamic function _rootRunBinary(self, parent, zone, f, arg1, arg2) { if (dart.equals(Zone[_current], zone)) return dart.dinvokef(f, arg1, arg2); let old = Zone[_enter](zone); try { return dart.dinvokef(f, arg1, arg2); } finally { Zone[_leave](old); } } // Function _rootRegisterCallback: (Zone, ZoneDelegate, Zone, () → dynamic) → ZoneCallback function _rootRegisterCallback(self, parent, zone, f) { return f; } // Function _rootRegisterUnaryCallback: (Zone, ZoneDelegate, Zone, (dynamic) → dynamic) → ZoneUnaryCallback function _rootRegisterUnaryCallback(self, parent, zone, f) { return f; } // Function _rootRegisterBinaryCallback: (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic) → ZoneBinaryCallback function _rootRegisterBinaryCallback(self, parent, zone, f) { return f; } // Function _rootErrorCallback: (Zone, ZoneDelegate, Zone, Object, StackTrace) → AsyncError function _rootErrorCallback(self, parent, zone, error, stackTrace) { return null; } // Function _rootScheduleMicrotask: (Zone, ZoneDelegate, Zone, () → dynamic) → void function _rootScheduleMicrotask(self, parent, zone, f) { if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) { let hasErrorHandler = !dart.notNull(_ROOT_ZONE.inSameErrorZone(zone)); f = zone.bindCallback(f, {runGuarded: hasErrorHandler}); } _scheduleAsyncCallback(f); } // Function _rootCreateTimer: (Zone, ZoneDelegate, Zone, Duration, () → void) → Timer function _rootCreateTimer(self, parent, zone, duration, callback) { if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) { callback = zone.bindCallback(callback); } return Timer[_createTimer](duration, callback); } // Function _rootCreatePeriodicTimer: (Zone, ZoneDelegate, Zone, Duration, (Timer) → void) → Timer function _rootCreatePeriodicTimer(self, parent, zone, duration, callback) { if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) { callback = dart.as(zone.bindUnaryCallback(callback), dart.throw_("Unimplemented type (Timer) → void")); } return Timer[_createPeriodicTimer](duration, callback); } // Function _rootPrint: (Zone, ZoneDelegate, Zone, String) → void function _rootPrint(self, parent, zone, line) { _internal.printToConsole(line); } // Function _printToZone: (String) → void function _printToZone(line) { Zone.current.print(line); } // Function _rootFork: (Zone, ZoneDelegate, Zone, ZoneSpecification, Map) → Zone function _rootFork(self, parent, zone, specification, zoneValues) { _internal.printToZone = _printToZone; if (specification == null) { specification = new ZoneSpecification(); } else if (!dart.is(specification, _ZoneSpecification)) { throw new core.ArgumentError("ZoneSpecifications must be instantiated" + " with the provided constructor."); } let valueMap = null; if (zoneValues == null) { if (dart.is(zone, _Zone)) { valueMap = zone[_map]; } else { valueMap = new collection.HashMap(); } } else { valueMap = new collection.HashMap.from(zoneValues); } return new _CustomZone(dart.as(zone, _Zone), specification, valueMap); } class _RootZoneSpecification extends core.Object { get handleUncaughtError() { return _rootHandleUncaughtError; } get run() { return _rootRun; } get runUnary() { return _rootRunUnary; } get runBinary() { return _rootRunBinary; } get registerCallback() { return _rootRegisterCallback; } get registerUnaryCallback() { return _rootRegisterUnaryCallback; } get registerBinaryCallback() { return _rootRegisterBinaryCallback; } get errorCallback() { return _rootErrorCallback; } get scheduleMicrotask() { return _rootScheduleMicrotask; } get createTimer() { return _rootCreateTimer; } get createPeriodicTimer() { return _rootCreatePeriodicTimer; } get print() { return _rootPrint; } get fork() { return _rootFork; } } _RootZoneSpecification[dart.implements] = () => [ZoneSpecification]; let _rootMap = Symbol('_rootMap'); let _rootDelegate = Symbol('_rootDelegate'); class _RootZone extends _Zone { _RootZone() { super._Zone(); } get [_run]() { return new _ZoneFunction(_ROOT_ZONE, _rootRun); } get [_runUnary]() { return new _ZoneFunction(_ROOT_ZONE, _rootRunUnary); } get [_runBinary]() { return new _ZoneFunction(_ROOT_ZONE, _rootRunBinary); } get [_registerCallback]() { return new _ZoneFunction(_ROOT_ZONE, _rootRegisterCallback); } get [_registerUnaryCallback]() { return new _ZoneFunction(_ROOT_ZONE, _rootRegisterUnaryCallback); } get [_registerBinaryCallback]() { return new _ZoneFunction(_ROOT_ZONE, _rootRegisterBinaryCallback); } get [_errorCallback]() { return new _ZoneFunction(_ROOT_ZONE, _rootErrorCallback); } get [_scheduleMicrotask]() { return new _ZoneFunction(_ROOT_ZONE, _rootScheduleMicrotask); } get [_createTimer]() { return new _ZoneFunction(_ROOT_ZONE, _rootCreateTimer); } get [_createPeriodicTimer]() { return new _ZoneFunction(_ROOT_ZONE, _rootCreatePeriodicTimer); } get [_print]() { return new _ZoneFunction(_ROOT_ZONE, _rootPrint); } get [_fork]() { return new _ZoneFunction(_ROOT_ZONE, _rootFork); } get [_handleUncaughtError]() { return new _ZoneFunction(_ROOT_ZONE, _rootHandleUncaughtError); } get parent() { return null; } get [_map]() { return _RootZone[_rootMap]; } get [_delegate]() { if (_RootZone[_rootDelegate] != null) return _RootZone[_rootDelegate]; return _RootZone[_rootDelegate] = new _ZoneDelegate(this); } get errorZone() { return this; } runGuarded(f) { try { if (core.identical(_ROOT_ZONE, Zone[_current])) { return f(); } return _rootRun(null, null, this, f); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } runUnaryGuarded(f, arg) { try { if (core.identical(_ROOT_ZONE, Zone[_current])) { return dart.dinvokef(f, arg); } return _rootRunUnary(null, null, this, f, arg); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } runBinaryGuarded(f, arg1, arg2) { try { if (core.identical(_ROOT_ZONE, Zone[_current])) { return dart.dinvokef(f, arg1, arg2); } return _rootRunBinary(null, null, this, f, arg1, arg2); } catch (e) { let s = dart.stackTrace(e); return this.handleUncaughtError(e, s); } } bindCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; if (runGuarded) { return (() => this.runGuarded(f)).bind(this); } else { return (() => this.run(f)).bind(this); } } bindUnaryCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; if (runGuarded) { return ((arg) => this.runUnaryGuarded(f, arg)).bind(this); } else { return ((arg) => this.runUnary(f, arg)).bind(this); } } bindBinaryCallback(f, opts) { let runGuarded = opts && 'runGuarded' in opts ? opts.runGuarded : true; if (runGuarded) { return ((arg1, arg2) => this.runBinaryGuarded(f, arg1, arg2)).bind(this); } else { return ((arg1, arg2) => this.runBinary(f, arg1, arg2)).bind(this); } } get(key) { return null; } handleUncaughtError(error, stackTrace) { return _rootHandleUncaughtError(null, null, this, error, stackTrace); } fork(opts) { let specification = opts && 'specification' in opts ? opts.specification : null; let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null; return _rootFork(null, null, this, specification, zoneValues); } run(f) { if (core.identical(Zone[_current], _ROOT_ZONE)) return f(); return _rootRun(null, null, this, f); } runUnary(f, arg) { if (core.identical(Zone[_current], _ROOT_ZONE)) return dart.dinvokef(f, arg); return _rootRunUnary(null, null, this, f, arg); } runBinary(f, arg1, arg2) { if (core.identical(Zone[_current], _ROOT_ZONE)) return dart.dinvokef(f, arg1, arg2); return _rootRunBinary(null, null, this, f, arg1, arg2); } registerCallback(f) { return f; } registerUnaryCallback(f) { return f; } registerBinaryCallback(f) { return f; } errorCallback(error, stackTrace) { return null; } scheduleMicrotask(f) { _rootScheduleMicrotask(null, null, this, f); } createTimer(duration, f) { return Timer[_createTimer](duration, f); } createPeriodicTimer(duration, f) { return Timer[_createPeriodicTimer](duration, f); } print(line) { _internal.printToConsole(line); } } _RootZone._rootDelegate = null; dart.defineLazyProperties(_RootZone, { get _rootMap() { return new collection.HashMap(); }, set _rootMap(_) {} }); let _ROOT_ZONE = new _RootZone(); // Function runZoned: (() → dynamic, {zoneValues: Map, zoneSpecification: ZoneSpecification, onError: Function}) → dynamic function runZoned(body, opts) { let zoneValues = opts && 'zoneValues' in opts ? opts.zoneValues : null; let zoneSpecification = opts && 'zoneSpecification' in opts ? opts.zoneSpecification : null; let onError = opts && 'onError' in opts ? opts.onError : null; let errorHandler = null; if (onError != null) { errorHandler = (self, parent, zone, error, stackTrace) => { try { if (dart.is(onError, ZoneBinaryCallback)) { return self.parent.runBinary(onError, error, stackTrace); } return self.parent.runUnary(dart.as(onError, dart.throw_("Unimplemented type (dynamic) → dynamic")), error); } catch (e) { let s = dart.stackTrace(e); if (core.identical(e, error)) { return parent.handleUncaughtError(zone, error, stackTrace); } else { return parent.handleUncaughtError(zone, e, s); } } }; } if (zoneSpecification == null) { zoneSpecification = new ZoneSpecification({handleUncaughtError: errorHandler}); } else if (errorHandler != null) { zoneSpecification = new ZoneSpecification.from(zoneSpecification, {handleUncaughtError: errorHandler}); } let zone = Zone.current.fork({specification: zoneSpecification, zoneValues: zoneValues}); if (onError != null) { return zone.runGuarded(body); } else { return zone.run(body); } } dart.copyProperties(exports, { get _hasDocument() { return typeof document == 'object'; } }); // Exports: exports.AsyncError = AsyncError; exports.Stream$ = Stream$; exports.Stream = Stream; exports.DeferredLibrary = DeferredLibrary; exports.DeferredLoadException = DeferredLoadException; exports.Future$ = Future$; exports.Future = Future; exports.TimeoutException = TimeoutException; exports.Completer$ = Completer$; exports.Completer = Completer; exports.scheduleMicrotask = scheduleMicrotask; exports.StreamSubscription$ = StreamSubscription$; exports.StreamSubscription = StreamSubscription; exports.EventSink$ = EventSink$; exports.EventSink = EventSink; exports.StreamView$ = StreamView$; exports.StreamView = StreamView; exports.StreamConsumer$ = StreamConsumer$; exports.StreamConsumer = StreamConsumer; exports.StreamSink$ = StreamSink$; exports.StreamSink = StreamSink; exports.StreamTransformer$ = StreamTransformer$; exports.StreamTransformer = StreamTransformer; exports.StreamIterator$ = StreamIterator$; exports.StreamIterator = StreamIterator; exports.StreamController$ = StreamController$; exports.StreamController = StreamController; exports.Timer = Timer; exports.ZoneCallback = ZoneCallback; exports.ZoneUnaryCallback = ZoneUnaryCallback; exports.ZoneBinaryCallback = ZoneBinaryCallback; exports.HandleUncaughtErrorHandler = HandleUncaughtErrorHandler; exports.RunHandler = RunHandler; exports.RunUnaryHandler = RunUnaryHandler; exports.RunBinaryHandler = RunBinaryHandler; exports.RegisterCallbackHandler = RegisterCallbackHandler; exports.RegisterUnaryCallbackHandler = RegisterUnaryCallbackHandler; exports.RegisterBinaryCallbackHandler = RegisterBinaryCallbackHandler; exports.ErrorCallbackHandler = ErrorCallbackHandler; exports.ScheduleMicrotaskHandler = ScheduleMicrotaskHandler; exports.CreateTimerHandler = CreateTimerHandler; exports.CreatePeriodicTimerHandler = CreatePeriodicTimerHandler; exports.PrintHandler = PrintHandler; exports.ForkHandler = ForkHandler; exports.ZoneSpecification = ZoneSpecification; exports.ZoneDelegate = ZoneDelegate; exports.Zone = Zone; exports.runZoned = runZoned; })(async || (async = {}));