Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(405)

Side by Side Diff: test/codegen/expect/dart/async.js

Issue 1020043002: Replace dart_core.js with actual compiled SDK (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: merge Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/codegen/expect/dart/_native_typed_data.js ('k') | test/codegen/expect/dart/collection.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 var async;
2 (function(exports) {
3 'use strict';
4 // Function _invokeErrorHandler: (Function, Object, StackTrace) → dynamic
5 function _invokeErrorHandler(errorHandler, error, stackTrace) {
6 if (dart.is(errorHandler, ZoneBinaryCallback)) {
7 return dart.dinvokef(errorHandler, error, stackTrace);
8 } else {
9 return dart.dinvokef(errorHandler, error);
10 }
11 }
12 // Function _registerErrorHandler: (Function, Zone) → Function
13 function _registerErrorHandler(errorHandler, zone) {
14 if (dart.is(errorHandler, ZoneBinaryCallback)) {
15 return zone.registerBinaryCallback(errorHandler);
16 } else {
17 return zone.registerUnaryCallback(dart.as(errorHandler, dart.throw_("Unimp lemented type (dynamic) → dynamic")));
18 }
19 }
20 let _getBestStackTrace = Symbol('_getBestStackTrace');
21 class AsyncError extends core.Object {
22 AsyncError(error, stackTrace) {
23 this.error = error;
24 this.stackTrace = stackTrace;
25 }
26 toString() {
27 return dart.as(dart.dinvoke(this.error, 'toString'), core.String);
28 }
29 }
30 class _UncaughtAsyncError extends AsyncError {
31 _UncaughtAsyncError(error, stackTrace) {
32 super.AsyncError(error, _getBestStackTrace(error, stackTrace));
33 }
34 static [_getBestStackTrace](error, stackTrace) {
35 if (stackTrace !== null)
36 return stackTrace;
37 if (dart.is(error, core.Error)) {
38 return dart.as(dart.dload(error, 'stackTrace'), core.StackTrace);
39 }
40 return null;
41 }
42 toString() {
43 let result = `Uncaught Error: ${this.error}`;
44 if (this.stackTrace !== null) {
45 result = `\nStack Trace:\n${this.stackTrace}`;
46 }
47 return result;
48 }
49 }
50 let _controller = Symbol('_controller');
51 let _createSubscription = Symbol('_createSubscription');
52 let _onListen = Symbol('_onListen');
53 let _addError = Symbol('_addError');
54 let _completeError = Symbol('_completeError');
55 let _complete = Symbol('_complete');
56 let _sink = Symbol('_sink');
57 let Stream$ = dart.generic(function(T) {
58 class Stream extends core.Object {
59 Stream() {
60 }
61 Stream$fromFuture(future) {
62 let controller = dart.as(new StreamController({sync: true}), _StreamCont roller$(T));
63 future.then(dart.closureWrap(((value) => {
64 controller._add(dart.as(value, T));
65 controller._closeUnchecked();
66 }).bind(this), "(T) → dynamic"), {onError: ((error, stackTrace) => {
67 controller._addError(error, dart.as(stackTrace, core.StackTrace));
68 controller._closeUnchecked();
69 }).bind(this)});
70 return controller.stream;
71 }
72 Stream$fromIterable(data) {
73 return new _GeneratedStreamImpl(() => new _IterablePendingEvents(data));
74 }
75 Stream$periodic(period, computation) {
76 if (computation === void 0)
77 computation = null;
78 if (computation === null)
79 computation = dart.closureWrap((i) => null, "(int) → T");
80 let timer = null;
81 let computationCount = 0;
82 let controller = null;
83 let watch = new core.Stopwatch();
84 // Function sendEvent: () → void
85 function sendEvent() {
86 watch.reset();
87 let data = computation((($tmp) => computationCount = dart.notNull($tmp ) + 1, $tmp)(computationCount));
88 controller.add(data);
89 }
90 // Function startPeriodicTimer: () → void
91 function startPeriodicTimer() {
92 dart.assert(timer === null);
93 timer = new Timer.periodic(period, (timer) => {
94 sendEvent();
95 });
96 }
97 controller = new StreamController({sync: true, onListen: (() => {
98 watch.start();
99 startPeriodicTimer();
100 }).bind(this), onPause: (() => {
101 timer.cancel();
102 timer = null;
103 watch.stop();
104 }).bind(this), onResume: (() => {
105 dart.assert(timer === null);
106 let elapsed = watch.elapsed;
107 watch.start();
108 timer = new Timer(period['-'](elapsed), () => {
109 timer = null;
110 startPeriodicTimer();
111 sendEvent();
112 });
113 }).bind(this), onCancel: (() => {
114 if (timer !== null)
115 timer.cancel();
116 timer = null;
117 }).bind(this)});
118 return controller.stream;
119 }
120 Stream$eventTransformed(source, mapSink) {
121 return dart.as(new _BoundSinkStream(source, dart.closureWrap(mapSink, "( EventSink<dynamic>) → EventSink")), Stream$(T));
122 }
123 get isBroadcast() {
124 return false;
125 }
126 asBroadcastStream(opt$) {
127 let onListen = opt$.onListen === void 0 ? null : opt$.onListen;
128 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel;
129 return new _AsBroadcastStream(this, dart.closureWrap(onListen, "(StreamS ubscription<dynamic>) → void"), dart.closureWrap(onCancel, "(StreamSubscription< dynamic>) → void"));
130 }
131 where(test) {
132 return new _WhereStream(this, test);
133 }
134 map(convert) {
135 return new _MapStream(this, convert);
136 }
137 asyncMap(convert) {
138 let controller = null;
139 let subscription = null;
140 // Function onListen: () → void
141 function onListen() {
142 let add = controller.add;
143 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController)));
144 let eventSink = controller;
145 let addError = eventSink[_addError];
146 subscription = this.listen(((event) => {
147 let newValue = null;
148 try {
149 newValue = convert(event);
150 } catch (e) {
151 let s = dart.stackTrace(e);
152 controller.addError(e, s);
153 return;
154 }
155
156 if (dart.is(newValue, Future)) {
157 subscription.pause();
158 dart.dinvoke(dart.dinvoke(newValue, 'then', add, {onError: addErro r}), 'whenComplete', subscription.resume);
159 } else {
160 controller.add(newValue);
161 }
162 }).bind(this), {onError: dart.as(addError, core.Function), onDone: con troller.close});
163 }
164 if (this.isBroadcast) {
165 controller = new StreamController.broadcast({onListen: onListen, onCan cel: (() => {
166 subscription.cancel();
167 }).bind(this), sync: true});
168 } else {
169 controller = new StreamController({onListen: onListen, onPause: (() => {
170 subscription.pause();
171 }).bind(this), onResume: (() => {
172 subscription.resume();
173 }).bind(this), onCancel: (() => {
174 subscription.cancel();
175 }).bind(this), sync: true});
176 }
177 return controller.stream;
178 }
179 asyncExpand(convert) {
180 let controller = null;
181 let subscription = null;
182 // Function onListen: () → void
183 function onListen() {
184 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController)));
185 let eventSink = controller;
186 subscription = this.listen(((event) => {
187 let newStream = null;
188 try {
189 newStream = convert(event);
190 } catch (e) {
191 let s = dart.stackTrace(e);
192 controller.addError(e, s);
193 return;
194 }
195
196 if (newStream !== null) {
197 subscription.pause();
198 controller.addStream(newStream).whenComplete(subscription.resume);
199 }
200 }).bind(this), {onError: dart.as(eventSink[_addError], core.Function), onDone: controller.close});
201 }
202 if (this.isBroadcast) {
203 controller = new StreamController.broadcast({onListen: onListen, onCan cel: (() => {
204 subscription.cancel();
205 }).bind(this), sync: true});
206 } else {
207 controller = new StreamController({onListen: onListen, onPause: (() => {
208 subscription.pause();
209 }).bind(this), onResume: (() => {
210 subscription.resume();
211 }).bind(this), onCancel: (() => {
212 subscription.cancel();
213 }).bind(this), sync: true});
214 }
215 return controller.stream;
216 }
217 handleError(onError, opt$) {
218 let test = opt$.test === void 0 ? null : opt$.test;
219 return new _HandleErrorStream(this, onError, test);
220 }
221 expand(convert) {
222 return new _ExpandStream(this, convert);
223 }
224 pipe(streamConsumer) {
225 return streamConsumer.addStream(this).then(((_) => streamConsumer.close( )).bind(this));
226 }
227 transform(streamTransformer) {
228 return streamTransformer.bind(this);
229 }
230 reduce(combine) {
231 let result = new _Future();
232 let seenFirst = false;
233 let value = null;
234 let subscription = null;
235 subscription = this.listen((element) => {
236 if (seenFirst) {
237 _runUserCode(() => combine(value, element), (newValue) => {
238 value = newValue;
239 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_ ("Unimplemented type (dynamic, StackTrace) → dynamic")));
240 } else {
241 value = element;
242 seenFirst = true;
243 }
244 }, {onError: result[_completeError], onDone: (() => {
245 if (!dart.notNull(seenFirst)) {
246 try {
247 throw _internal.IterableElementError.noElement();
248 } catch (e) {
249 let s = dart.stackTrace(e);
250 _completeWithErrorCallback(result, e, s);
251 }
252
253 } else {
254 result._complete(value);
255 }
256 }).bind(this), cancelOnError: true});
257 return result;
258 }
259 fold(initialValue, combine) {
260 let result = new _Future();
261 let value = initialValue;
262 let subscription = null;
263 subscription = this.listen((element) => {
264 _runUserCode(() => dart.dinvokef(combine, value, element), (newValue) => {
265 value = newValue;
266 }, dart.as(_cancelAndErrorClosure(subscription, result), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
267 }, {onError: ((e, st) => {
268 result._completeError(e, dart.as(st, core.StackTrace));
269 }).bind(this), onDone: (() => {
270 result._complete(value);
271 }).bind(this), cancelOnError: true});
272 return result;
273 }
274 join(separator) {
275 if (separator === void 0)
276 separator = "";
277 let result = new _Future();
278 let buffer = new core.StringBuffer();
279 let subscription = null;
280 let first = true;
281 subscription = this.listen(((element) => {
282 if (!dart.notNull(first)) {
283 buffer.write(separator);
284 }
285 first = false;
286 try {
287 buffer.write(element);
288 } catch (e) {
289 let s = dart.stackTrace(e);
290 _cancelAndErrorWithReplacement(subscription, result, e, s);
291 }
292
293 }).bind(this), {onError: ((e) => {
294 result._completeError(e);
295 }).bind(this), onDone: (() => {
296 result._complete(buffer.toString());
297 }).bind(this), cancelOnError: true});
298 return result;
299 }
300 contains(needle) {
301 let future = new _Future();
302 let subscription = null;
303 subscription = this.listen((element) => {
304 _runUserCode(() => dart.equals(element, needle), (isMatch) => {
305 if (isMatch) {
306 _cancelAndValue(subscription, future, true);
307 }
308 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
309 }, {onError: future[_completeError], onDone: (() => {
310 future._complete(false);
311 }).bind(this), cancelOnError: true});
312 return future;
313 }
314 forEach(action) {
315 let future = new _Future();
316 let subscription = null;
317 subscription = this.listen((element) => {
318 _runUserCode(() => action(element), (_) => {
319 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
320 }, {onError: future[_completeError], onDone: (() => {
321 future._complete(null);
322 }).bind(this), cancelOnError: true});
323 return future;
324 }
325 every(test) {
326 let future = new _Future();
327 let subscription = null;
328 subscription = this.listen((element) => {
329 _runUserCode(() => test(element), (isMatch) => {
330 if (!dart.notNull(isMatch)) {
331 _cancelAndValue(subscription, future, false);
332 }
333 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
334 }, {onError: future[_completeError], onDone: (() => {
335 future._complete(true);
336 }).bind(this), cancelOnError: true});
337 return future;
338 }
339 any(test) {
340 let future = new _Future();
341 let subscription = null;
342 subscription = this.listen((element) => {
343 _runUserCode(() => test(element), (isMatch) => {
344 if (isMatch) {
345 _cancelAndValue(subscription, future, true);
346 }
347 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
348 }, {onError: future[_completeError], onDone: (() => {
349 future._complete(false);
350 }).bind(this), cancelOnError: true});
351 return future;
352 }
353 get length() {
354 let future = new _Future();
355 let count = 0;
356 this.listen(dart.closureWrap((_) => {
357 count = dart.notNull(count) + 1;
358 }, "(T) → void"), {onError: future[_completeError], onDone: (() => {
359 future._complete(count);
360 }).bind(this), cancelOnError: true});
361 return future;
362 }
363 get isEmpty() {
364 let future = new _Future();
365 let subscription = null;
366 subscription = this.listen(dart.closureWrap((_) => {
367 _cancelAndValue(subscription, future, false);
368 }, "(T) → void"), {onError: future[_completeError], onDone: (() => {
369 future._complete(true);
370 }).bind(this), cancelOnError: true});
371 return future;
372 }
373 toList() {
374 let result = new List.from([]);
375 let future = new _Future();
376 this.listen(((data) => {
377 result.add(data);
378 }).bind(this), {onError: future[_completeError], onDone: (() => {
379 future._complete(result);
380 }).bind(this), cancelOnError: true});
381 return future;
382 }
383 toSet() {
384 let result = new core.Set();
385 let future = new _Future();
386 this.listen(((data) => {
387 result.add(data);
388 }).bind(this), {onError: future[_completeError], onDone: (() => {
389 future._complete(result);
390 }).bind(this), cancelOnError: true});
391 return future;
392 }
393 drain(futureValue) {
394 if (futureValue === void 0)
395 futureValue = null;
396 return this.listen(null, {cancelOnError: true}).asFuture(futureValue);
397 }
398 take(count) {
399 return dart.as(new _TakeStream(this, count), Stream$(T));
400 }
401 takeWhile(test) {
402 return dart.as(new _TakeWhileStream(this, test), Stream$(T));
403 }
404 skip(count) {
405 return dart.as(new _SkipStream(this, count), Stream$(T));
406 }
407 skipWhile(test) {
408 return dart.as(new _SkipWhileStream(this, test), Stream$(T));
409 }
410 distinct(equals) {
411 if (equals === void 0)
412 equals = null;
413 return dart.as(new _DistinctStream(this, equals), Stream$(T));
414 }
415 get first() {
416 let future = new _Future();
417 let subscription = null;
418 subscription = this.listen((value) => {
419 _cancelAndValue(subscription, future, value);
420 }, {
421 onError: future[_completeError],
422 onDone: () => {
423 try {
424 throw _internal.IterableElementError.noElement();
425 } catch (e) {
426 let s = dart.stackTrace(e);
427 _completeWithErrorCallback(future, e, s);
428 }
429
430 },
431 cancelOnError: true
432 });
433 return future;
434 }
435 get last() {
436 let future = new _Future();
437 let result = null;
438 let foundResult = false;
439 let subscription = null;
440 subscription = this.listen((value) => {
441 foundResult = true;
442 result = value;
443 }, {onError: future[_completeError], onDone: (() => {
444 if (foundResult) {
445 future._complete(result);
446 return;
447 }
448 try {
449 throw _internal.IterableElementError.noElement();
450 } catch (e) {
451 let s = dart.stackTrace(e);
452 _completeWithErrorCallback(future, e, s);
453 }
454
455 }).bind(this), cancelOnError: true});
456 return future;
457 }
458 get single() {
459 let future = new _Future();
460 let result = null;
461 let foundResult = false;
462 let subscription = null;
463 subscription = this.listen((value) => {
464 if (foundResult) {
465 try {
466 throw _internal.IterableElementError.tooMany();
467 } catch (e) {
468 let s = dart.stackTrace(e);
469 _cancelAndErrorWithReplacement(subscription, future, e, s);
470 }
471
472 return;
473 }
474 foundResult = true;
475 result = value;
476 }, {onError: future[_completeError], onDone: (() => {
477 if (foundResult) {
478 future._complete(result);
479 return;
480 }
481 try {
482 throw _internal.IterableElementError.noElement();
483 } catch (e) {
484 let s = dart.stackTrace(e);
485 _completeWithErrorCallback(future, e, s);
486 }
487
488 }).bind(this), cancelOnError: true});
489 return future;
490 }
491 firstWhere(test, opt$) {
492 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal ue;
493 let future = new _Future();
494 let subscription = null;
495 subscription = this.listen((value) => {
496 _runUserCode(() => test(value), (isMatch) => {
497 if (isMatch) {
498 _cancelAndValue(subscription, future, value);
499 }
500 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
501 }, {onError: future[_completeError], onDone: (() => {
502 if (defaultValue !== null) {
503 _runUserCode(defaultValue, future[_complete], future[_completeErro r]);
504 return;
505 }
506 try {
507 throw _internal.IterableElementError.noElement();
508 } catch (e) {
509 let s = dart.stackTrace(e);
510 _completeWithErrorCallback(future, e, s);
511 }
512
513 }).bind(this), cancelOnError: true});
514 return future;
515 }
516 lastWhere(test, opt$) {
517 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultVal ue;
518 let future = new _Future();
519 let result = null;
520 let foundResult = false;
521 let subscription = null;
522 subscription = this.listen((value) => {
523 _runUserCode(() => true === test(value), (isMatch) => {
524 if (isMatch) {
525 foundResult = true;
526 result = value;
527 }
528 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
529 }, {onError: future[_completeError], onDone: (() => {
530 if (foundResult) {
531 future._complete(result);
532 return;
533 }
534 if (defaultValue !== null) {
535 _runUserCode(defaultValue, future[_complete], future[_completeErro r]);
536 return;
537 }
538 try {
539 throw _internal.IterableElementError.noElement();
540 } catch (e) {
541 let s = dart.stackTrace(e);
542 _completeWithErrorCallback(future, e, s);
543 }
544
545 }).bind(this), cancelOnError: true});
546 return future;
547 }
548 singleWhere(test) {
549 let future = new _Future();
550 let result = null;
551 let foundResult = false;
552 let subscription = null;
553 subscription = this.listen((value) => {
554 _runUserCode(() => true === test(value), (isMatch) => {
555 if (isMatch) {
556 if (foundResult) {
557 try {
558 throw _internal.IterableElementError.tooMany();
559 } catch (e) {
560 let s = dart.stackTrace(e);
561 _cancelAndErrorWithReplacement(subscription, future, e, s);
562 }
563
564 return;
565 }
566 foundResult = true;
567 result = value;
568 }
569 }, dart.as(_cancelAndErrorClosure(subscription, future), dart.throw_(" Unimplemented type (dynamic, StackTrace) → dynamic")));
570 }, {onError: future[_completeError], onDone: (() => {
571 if (foundResult) {
572 future._complete(result);
573 return;
574 }
575 try {
576 throw _internal.IterableElementError.noElement();
577 } catch (e) {
578 let s = dart.stackTrace(e);
579 _completeWithErrorCallback(future, e, s);
580 }
581
582 }).bind(this), cancelOnError: true});
583 return future;
584 }
585 elementAt(index) {
586 if (dart.notNull(!(typeof index == number)) || dart.notNull(index) < 0)
587 throw new core.ArgumentError(index);
588 let future = new _Future();
589 let subscription = null;
590 let elementIndex = 0;
591 subscription = this.listen((value) => {
592 if (index === elementIndex) {
593 _cancelAndValue(subscription, future, value);
594 return;
595 }
596 elementIndex = 1;
597 }, {onError: future[_completeError], onDone: (() => {
598 future._completeError(new core.RangeError.index(index, this, "index" , null, elementIndex));
599 }).bind(this), cancelOnError: true});
600 return future;
601 }
602 timeout(timeLimit, opt$) {
603 let onTimeout = opt$.onTimeout === void 0 ? null : opt$.onTimeout;
604 let controller = null;
605 let subscription = null;
606 let timer = null;
607 let zone = null;
608 let timeout = null;
609 // Function onData: (T) → void
610 function onData(event) {
611 timer.cancel();
612 controller.add(event);
613 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
614 }
615 // Function onError: (dynamic, StackTrace) → void
616 function onError(error, stackTrace) {
617 timer.cancel();
618 dart.assert(dart.notNull(dart.is(controller, _StreamController)) || da rt.notNull(dart.is(controller, _BroadcastStreamController)));
619 let eventSink = controller;
620 dart.dinvoke(eventSink, '_addError', error, stackTrace);
621 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
622 }
623 // Function onDone: () → void
624 function onDone() {
625 timer.cancel();
626 controller.close();
627 }
628 // Function onListen: () → void
629 function onListen() {
630 zone = Zone.current;
631 if (onTimeout === null) {
632 timeout = (() => {
633 controller.addError(new TimeoutException("No stream event", timeLi mit), null);
634 }).bind(this);
635 } else {
636 onTimeout = dart.closureWrap(zone.registerUnaryCallback(onTimeout), "(EventSink<dynamic>) → void");
637 let wrapper = new _ControllerEventSinkWrapper(null);
638 timeout = (() => {
639 wrapper[_sink] = controller;
640 zone.runUnaryGuarded(onTimeout, wrapper);
641 wrapper[_sink] = null;
642 }).bind(this);
643 }
644 subscription = this.listen(onData, {onError: onError, onDone: onDone}) ;
645 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
646 }
647 // Function onCancel: () → Future<dynamic>
648 function onCancel() {
649 timer.cancel();
650 let result = subscription.cancel();
651 subscription = null;
652 return result;
653 }
654 controller = this.isBroadcast ? new _SyncBroadcastStreamController(onLis ten, onCancel) : new _SyncStreamController(onListen, (() => {
655 timer.cancel();
656 subscription.pause();
657 }).bind(this), (() => {
658 subscription.resume();
659 timer = zone.createTimer(timeLimit, dart.as(timeout, dart.throw_("Unim plemented type () → void")));
660 }).bind(this), onCancel);
661 return controller.stream;
662 }
663 }
664 dart.defineNamedConstructor(Stream, 'fromFuture');
665 dart.defineNamedConstructor(Stream, 'fromIterable');
666 dart.defineNamedConstructor(Stream, 'periodic');
667 dart.defineNamedConstructor(Stream, 'eventTransformed');
668 return Stream;
669 });
670 let Stream = Stream$(dart.dynamic);
671 let _StreamImpl$ = dart.generic(function(T) {
672 class _StreamImpl extends Stream$(T) {
673 listen(onData, opt$) {
674 let onError = opt$.onError === void 0 ? null : opt$.onError;
675 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
676 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
677 cancelOnError = core.identical(true, cancelOnError);
678 let subscription = this[_createSubscription](onData, onError, onDone, ca ncelOnError);
679 this[_onListen](subscription);
680 return dart.as(subscription, StreamSubscription$(T));
681 }
682 [_createSubscription](onData, onError, onDone, cancelOnError) {
683 return new _BufferingStreamSubscription(onData, onError, onDone, cancelO nError);
684 }
685 [_onListen](subscription) {}
686 }
687 return _StreamImpl;
688 });
689 let _StreamImpl = _StreamImpl$(dart.dynamic);
690 let _ControllerStream$ = dart.generic(function(T) {
691 class _ControllerStream extends _StreamImpl$(T) {
692 _ControllerStream($_controller) {
693 this[_controller] = $_controller;
694 super._StreamImpl();
695 }
696 [_createSubscription](onData, onError, onDone, cancelOnError) {
697 return this[_controller]._subscribe(onData, onError, onDone, cancelOnErr or);
698 }
699 get hashCode() {
700 return dart.notNull(this[_controller].hashCode) ^ 892482866;
701 }
702 ['=='](other) {
703 if (core.identical(this, other))
704 return true;
705 if (!dart.is(other, _ControllerStream))
706 return false;
707 let otherStream = dart.as(other, _ControllerStream);
708 return core.identical(otherStream[_controller], this[_controller]);
709 }
710 }
711 return _ControllerStream;
712 });
713 let _ControllerStream = _ControllerStream$(dart.dynamic);
714 let _BroadcastStream$ = dart.generic(function(T) {
715 class _BroadcastStream extends _ControllerStream$(T) {
716 _BroadcastStream(controller) {
717 super._ControllerStream(dart.as(controller, _StreamControllerLifecycle$( T)));
718 }
719 get isBroadcast() {
720 return true;
721 }
722 }
723 return _BroadcastStream;
724 });
725 let _BroadcastStream = _BroadcastStream$(dart.dynamic);
726 let _next = Symbol('_next');
727 let _previous = Symbol('_previous');
728 class _BroadcastSubscriptionLink extends core.Object {
729 _BroadcastSubscriptionLink() {
730 this[_next] = null;
731 this[_previous] = null;
732 }
733 }
734 let _eventState = Symbol('_eventState');
735 let _expectsEvent = Symbol('_expectsEvent');
736 let _toggleEventId = Symbol('_toggleEventId');
737 let _isFiring = Symbol('_isFiring');
738 let _setRemoveAfterFiring = Symbol('_setRemoveAfterFiring');
739 let _removeAfterFiring = Symbol('_removeAfterFiring');
740 let _onPause = Symbol('_onPause');
741 let _onResume = Symbol('_onResume');
742 let _onCancel = Symbol('_onCancel');
743 let _zone = Symbol('_zone');
744 let _state = Symbol('_state');
745 let _onData = Symbol('_onData');
746 let _onError = Symbol('_onError');
747 let _onDone = Symbol('_onDone');
748 let _cancelFuture = Symbol('_cancelFuture');
749 let _pending = Symbol('_pending');
750 let _setPendingEvents = Symbol('_setPendingEvents');
751 let _extractPending = Symbol('_extractPending');
752 let _isCanceled = Symbol('_isCanceled');
753 let _isPaused = Symbol('_isPaused');
754 let _isInputPaused = Symbol('_isInputPaused');
755 let _inCallback = Symbol('_inCallback');
756 let _guardCallback = Symbol('_guardCallback');
757 let _decrementPauseCount = Symbol('_decrementPauseCount');
758 let _hasPending = Symbol('_hasPending');
759 let _mayResumeInput = Symbol('_mayResumeInput');
760 let _cancel = Symbol('_cancel');
761 let _isClosed = Symbol('_isClosed');
762 let _waitsForCancel = Symbol('_waitsForCancel');
763 let _canFire = Symbol('_canFire');
764 let _cancelOnError = Symbol('_cancelOnError');
765 let _incrementPauseCount = Symbol('_incrementPauseCount');
766 let _add = Symbol('_add');
767 let _sendData = Symbol('_sendData');
768 let _addPending = Symbol('_addPending');
769 let _sendError = Symbol('_sendError');
770 let _close = Symbol('_close');
771 let _sendDone = Symbol('_sendDone');
772 let _checkState = Symbol('_checkState');
773 let _BufferingStreamSubscription$ = dart.generic(function(T) {
774 class _BufferingStreamSubscription extends core.Object {
775 _BufferingStreamSubscription(onData, onError, onDone, cancelOnError) {
776 this[_zone] = Zone.current;
777 this[_state] = cancelOnError ? _BufferingStreamSubscription._STATE_CANCE L_ON_ERROR : 0;
778 this[_onData] = null;
779 this[_onError] = null;
780 this[_onDone] = null;
781 this[_cancelFuture] = null;
782 this[_pending] = null;
783 this.onData(onData);
784 this.onError(onError);
785 this.onDone(onDone);
786 }
787 [_setPendingEvents](pendingEvents) {
788 dart.assert(this[_pending] === null);
789 if (pendingEvents === null)
790 return;
791 this[_pending] = pendingEvents;
792 if (!dart.notNull(pendingEvents.isEmpty)) {
793 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING;
794 this[_pending].schedule(this);
795 }
796 }
797 [_extractPending]() {
798 dart.assert(this[_isCanceled]);
799 let events = this[_pending];
800 this[_pending] = null;
801 return events;
802 }
803 onData(handleData) {
804 if (handleData === null)
805 handleData = dart.closureWrap(_nullDataHandler, "(T) → void");
806 this[_onData] = dart.closureWrap(this[_zone].registerUnaryCallback(handl eData), "(T) → void");
807 }
808 onError(handleError) {
809 if (handleError === null)
810 handleError = _nullErrorHandler;
811 this[_onError] = _registerErrorHandler(handleError, this[_zone]);
812 }
813 onDone(handleDone) {
814 if (handleDone === null)
815 handleDone = _nullDoneHandler;
816 this[_onDone] = this[_zone].registerCallback(handleDone);
817 }
818 pause(resumeSignal) {
819 if (resumeSignal === void 0)
820 resumeSignal = null;
821 if (this[_isCanceled])
822 return;
823 let wasPaused = this[_isPaused];
824 let wasInputPaused = this[_isInputPaused];
825 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S TATE_INPUT_PAUSED);
826 if (resumeSignal !== null)
827 resumeSignal.whenComplete(this.resume);
828 if (!dart.notNull(wasPaused) && dart.notNull(this[_pending] !== null))
829 this[_pending].cancelSchedule();
830 if (!dart.notNull(wasInputPaused) && !dart.notNull(this[_inCallback]))
831 this[_guardCallback](this[_onPause]);
832 }
833 resume() {
834 if (this[_isCanceled])
835 return;
836 if (this[_isPaused]) {
837 this[_decrementPauseCount]();
838 if (!dart.notNull(this[_isPaused])) {
839 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_pending]. isEmpty)) {
840 this[_pending].schedule(this);
841 } else {
842 dart.assert(this[_mayResumeInput]);
843 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_I NPUT_PAUSED);
844 if (!dart.notNull(this[_inCallback]))
845 this[_guardCallback](this[_onResume]);
846 }
847 }
848 }
849 }
850 cancel() {
851 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_WAIT_FO R_CANCEL);
852 if (this[_isCanceled])
853 return this[_cancelFuture];
854 this[_cancel]();
855 return this[_cancelFuture];
856 }
857 asFuture(futureValue) {
858 if (futureValue === void 0)
859 futureValue = null;
860 let result = new _Future();
861 this[_onDone] = (() => {
862 result._complete(futureValue);
863 }).bind(this);
864 this[_onError] = ((error, stackTrace) => {
865 this.cancel();
866 result._completeError(error, dart.as(stackTrace, core.StackTrace));
867 }).bind(this);
868 return result;
869 }
870 get [_isInputPaused]() {
871 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_INPUT_PAUSED)) !== 0;
872 }
873 get [_isClosed]() {
874 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_CLOSED)) !== 0;
875 }
876 get [_isCanceled]() {
877 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_CANCELED)) !== 0;
878 }
879 get [_waitsForCancel]() {
880 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_WAIT_FOR_CANCEL)) !== 0;
881 }
882 get [_inCallback]() {
883 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_IN_CALLBACK)) !== 0;
884 }
885 get [_hasPending]() {
886 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_HAS_PENDING)) !== 0;
887 }
888 get [_isPaused]() {
889 return dart.notNull(this[_state]) >= dart.notNull(_BufferingStreamSubscr iption._STATE_PAUSE_COUNT);
890 }
891 get [_canFire]() {
892 return dart.notNull(this[_state]) < dart.notNull(_BufferingStreamSubscri ption._STATE_IN_CALLBACK);
893 }
894 get [_mayResumeInput]() {
895 return !dart.notNull(this[_isPaused]) && (dart.notNull(this[_pending] == = null) || dart.notNull(this[_pending].isEmpty));
896 }
897 get [_cancelOnError]() {
898 return (dart.notNull(this[_state]) & dart.notNull(_BufferingStreamSubscr iption._STATE_CANCEL_ON_ERROR)) !== 0;
899 }
900 get isPaused() {
901 return this[_isPaused];
902 }
903 [_cancel]() {
904 this[_state] = _BufferingStreamSubscription._STATE_CANCELED;
905 if (this[_hasPending]) {
906 this[_pending].cancelSchedule();
907 }
908 if (!dart.notNull(this[_inCallback]))
909 this[_pending] = null;
910 this[_cancelFuture] = this[_onCancel]();
911 }
912 [_incrementPauseCount]() {
913 this[_state] = dart.notNull(this[_state]) + dart.notNull(_BufferingStrea mSubscription._STATE_PAUSE_COUNT) | dart.notNull(_BufferingStreamSubscription._S TATE_INPUT_PAUSED);
914 }
915 [_decrementPauseCount]() {
916 dart.assert(this[_isPaused]);
917 this[_state] = _BufferingStreamSubscription._STATE_PAUSE_COUNT;
918 }
919 [_add](data) {
920 dart.assert(!dart.notNull(this[_isClosed]));
921 if (this[_isCanceled])
922 return;
923 if (this[_canFire]) {
924 this[_sendData](data);
925 } else {
926 this[_addPending](new _DelayedData(data));
927 }
928 }
929 [_addError](error, stackTrace) {
930 if (this[_isCanceled])
931 return;
932 if (this[_canFire]) {
933 this[_sendError](error, stackTrace);
934 } else {
935 this[_addPending](new _DelayedError(error, stackTrace));
936 }
937 }
938 [_close]() {
939 dart.assert(!dart.notNull(this[_isClosed]));
940 if (this[_isCanceled])
941 return;
942 this[_state] = _BufferingStreamSubscription._STATE_CLOSED;
943 if (this[_canFire]) {
944 this[_sendDone]();
945 } else {
946 this[_addPending](new _DelayedDone());
947 }
948 }
949 [_onPause]() {
950 dart.assert(this[_isInputPaused]);
951 }
952 [_onResume]() {
953 dart.assert(!dart.notNull(this[_isInputPaused]));
954 }
955 [_onCancel]() {
956 dart.assert(this[_isCanceled]);
957 return null;
958 }
959 [_addPending](event) {
960 let pending = dart.as(this[_pending], _StreamImplEvents);
961 if (this[_pending] === null)
962 pending = this[_pending] = new _StreamImplEvents();
963 pending.add(event);
964 if (!dart.notNull(this[_hasPending])) {
965 this[_state] = _BufferingStreamSubscription._STATE_HAS_PENDING;
966 if (!dart.notNull(this[_isPaused])) {
967 this[_pending].schedule(this);
968 }
969 }
970 }
971 [_sendData](data) {
972 dart.assert(!dart.notNull(this[_isCanceled]));
973 dart.assert(!dart.notNull(this[_isPaused]));
974 dart.assert(!dart.notNull(this[_inCallback]));
975 let wasInputPaused = this[_isInputPaused];
976 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK;
977 this[_zone].runUnaryGuarded(this[_onData], data);
978 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL BACK);
979 this[_checkState](wasInputPaused);
980 }
981 [_sendError](error, stackTrace) {
982 dart.assert(!dart.notNull(this[_isCanceled]));
983 dart.assert(!dart.notNull(this[_isPaused]));
984 dart.assert(!dart.notNull(this[_inCallback]));
985 let wasInputPaused = this[_isInputPaused];
986 // Function sendError: () → void
987 function sendError() {
988 if (dart.notNull(this[_isCanceled]) && !dart.notNull(this[_waitsForCan cel]))
989 return;
990 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK;
991 if (dart.is(this[_onError], ZoneBinaryCallback)) {
992 this[_zone].runBinaryGuarded(dart.as(this[_onError], dart.throw_("Un implemented type (dynamic, dynamic) → dynamic")), error, stackTrace);
993 } else {
994 this[_zone].runUnaryGuarded(dart.as(this[_onError], dart.throw_("Uni mplemented type (dynamic) → dynamic")), error);
995 }
996 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA LLBACK);
997 }
998 if (this[_cancelOnError]) {
999 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL;
1000 this[_cancel]();
1001 if (dart.is(this[_cancelFuture], Future)) {
1002 this[_cancelFuture].whenComplete(sendError);
1003 } else {
1004 sendError();
1005 }
1006 } else {
1007 sendError();
1008 this[_checkState](wasInputPaused);
1009 }
1010 }
1011 [_sendDone]() {
1012 dart.assert(!dart.notNull(this[_isCanceled]));
1013 dart.assert(!dart.notNull(this[_isPaused]));
1014 dart.assert(!dart.notNull(this[_inCallback]));
1015 // Function sendDone: () → void
1016 function sendDone() {
1017 if (!dart.notNull(this[_waitsForCancel]))
1018 return;
1019 this[_state] = dart.notNull(_BufferingStreamSubscription._STATE_CANCEL ED) | dart.notNull(_BufferingStreamSubscription._STATE_CLOSED) | dart.notNull(_B ufferingStreamSubscription._STATE_IN_CALLBACK);
1020 this[_zone].runGuarded(this[_onDone]);
1021 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA LLBACK);
1022 }
1023 this[_cancel]();
1024 this[_state] = _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL;
1025 if (dart.is(this[_cancelFuture], Future)) {
1026 this[_cancelFuture].whenComplete(sendDone);
1027 } else {
1028 sendDone();
1029 }
1030 }
1031 [_guardCallback](callback) {
1032 dart.assert(!dart.notNull(this[_inCallback]));
1033 let wasInputPaused = this[_isInputPaused];
1034 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK;
1035 dart.dinvokef(callback);
1036 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CALL BACK);
1037 this[_checkState](wasInputPaused);
1038 }
1039 [_checkState](wasInputPaused) {
1040 dart.assert(!dart.notNull(this[_inCallback]));
1041 if (dart.notNull(this[_hasPending]) && dart.notNull(this[_pending].isEmp ty)) {
1042 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_HAS_P ENDING);
1043 if (dart.notNull(this[_isInputPaused]) && dart.notNull(this[_mayResume Input])) {
1044 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_INP UT_PAUSED);
1045 }
1046 }
1047 while (true) {
1048 if (this[_isCanceled]) {
1049 this[_pending] = null;
1050 return;
1051 }
1052 let isInputPaused = this[_isInputPaused];
1053 if (wasInputPaused === isInputPaused)
1054 break;
1055 this[_state] = _BufferingStreamSubscription._STATE_IN_CALLBACK;
1056 if (isInputPaused) {
1057 this[_onPause]();
1058 } else {
1059 this[_onResume]();
1060 }
1061 this[_state] = ~dart.notNull(_BufferingStreamSubscription._STATE_IN_CA LLBACK);
1062 wasInputPaused = isInputPaused;
1063 }
1064 if (dart.notNull(this[_hasPending]) && !dart.notNull(this[_isPaused])) {
1065 this[_pending].schedule(this);
1066 }
1067 }
1068 }
1069 _BufferingStreamSubscription._STATE_CANCEL_ON_ERROR = 1;
1070 _BufferingStreamSubscription._STATE_CLOSED = 2;
1071 _BufferingStreamSubscription._STATE_INPUT_PAUSED = 4;
1072 _BufferingStreamSubscription._STATE_CANCELED = 8;
1073 _BufferingStreamSubscription._STATE_WAIT_FOR_CANCEL = 16;
1074 _BufferingStreamSubscription._STATE_IN_CALLBACK = 32;
1075 _BufferingStreamSubscription._STATE_HAS_PENDING = 64;
1076 _BufferingStreamSubscription._STATE_PAUSE_COUNT = 128;
1077 _BufferingStreamSubscription._STATE_PAUSE_COUNT_SHIFT = 7;
1078 return _BufferingStreamSubscription;
1079 });
1080 let _BufferingStreamSubscription = _BufferingStreamSubscription$(dart.dynamic) ;
1081 let _ControllerSubscription$ = dart.generic(function(T) {
1082 class _ControllerSubscription extends _BufferingStreamSubscription$(T) {
1083 _ControllerSubscription($_controller, onData, onError, onDone, cancelOnErr or) {
1084 this[_controller] = $_controller;
1085 super._BufferingStreamSubscription(onData, onError, onDone, cancelOnErro r);
1086 }
1087 [_onCancel]() {
1088 return this[_controller]._recordCancel(this);
1089 }
1090 [_onPause]() {
1091 this[_controller]._recordPause(this);
1092 }
1093 [_onResume]() {
1094 this[_controller]._recordResume(this);
1095 }
1096 }
1097 return _ControllerSubscription;
1098 });
1099 let _ControllerSubscription = _ControllerSubscription$(dart.dynamic);
1100 let _BroadcastSubscription$ = dart.generic(function(T) {
1101 class _BroadcastSubscription extends _ControllerSubscription$(T) {
1102 _BroadcastSubscription(controller, onData, onError, onDone, cancelOnError) {
1103 this[_eventState] = null;
1104 this[_next] = null;
1105 this[_previous] = null;
1106 super._ControllerSubscription(dart.as(controller, _StreamControllerLifec ycle$(T)), onData, onError, onDone, cancelOnError);
1107 this[_next] = this[_previous] = this;
1108 }
1109 get [_controller]() {
1110 return dart.as(super[_controller], _BroadcastStreamController);
1111 }
1112 [_expectsEvent](eventId) {
1113 return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscri ption._STATE_EVENT_ID)) === eventId;
1114 }
1115 [_toggleEventId]() {
1116 this[_eventState] = _BroadcastSubscription._STATE_EVENT_ID;
1117 }
1118 get [_isFiring]() {
1119 return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscri ption._STATE_FIRING)) !== 0;
1120 }
1121 [_setRemoveAfterFiring]() {
1122 dart.assert(this[_isFiring]);
1123 this[_eventState] = _BroadcastSubscription._STATE_REMOVE_AFTER_FIRING;
1124 }
1125 get [_removeAfterFiring]() {
1126 return (dart.notNull(this[_eventState]) & dart.notNull(_BroadcastSubscri ption._STATE_REMOVE_AFTER_FIRING)) !== 0;
1127 }
1128 [_onPause]() {}
1129 [_onResume]() {}
1130 }
1131 _BroadcastSubscription._STATE_EVENT_ID = 1;
1132 _BroadcastSubscription._STATE_FIRING = 2;
1133 _BroadcastSubscription._STATE_REMOVE_AFTER_FIRING = 4;
1134 return _BroadcastSubscription;
1135 });
1136 let _BroadcastSubscription = _BroadcastSubscription$(dart.dynamic);
1137 let _addStreamState = Symbol('_addStreamState');
1138 let _doneFuture = Symbol('_doneFuture');
1139 let _isEmpty = Symbol('_isEmpty');
1140 let _hasOneListener = Symbol('_hasOneListener');
1141 let _isAddingStream = Symbol('_isAddingStream');
1142 let _mayAddEvent = Symbol('_mayAddEvent');
1143 let _ensureDoneFuture = Symbol('_ensureDoneFuture');
1144 let _addListener = Symbol('_addListener');
1145 let _removeListener = Symbol('_removeListener');
1146 let _subscribe = Symbol('_subscribe');
1147 let _recordCancel = Symbol('_recordCancel');
1148 let _callOnCancel = Symbol('_callOnCancel');
1149 let _recordPause = Symbol('_recordPause');
1150 let _recordResume = Symbol('_recordResume');
1151 let _addEventError = Symbol('_addEventError');
1152 let _forEachListener = Symbol('_forEachListener');
1153 let _STATE_FIRING = Symbol('_STATE_FIRING');
1154 let _mayComplete = Symbol('_mayComplete');
1155 let _BroadcastStreamController$ = dart.generic(function(T) {
1156 class _BroadcastStreamController extends core.Object {
1157 _BroadcastStreamController($_onListen, $_onCancel) {
1158 this[_onListen] = $_onListen;
1159 this[_onCancel] = $_onCancel;
1160 this[_state] = _BroadcastStreamController._STATE_INITIAL;
1161 this[_next] = null;
1162 this[_previous] = null;
1163 this[_addStreamState] = null;
1164 this[_doneFuture] = null;
1165 this[_next] = this[_previous] = this;
1166 }
1167 get stream() {
1168 return new _BroadcastStream(this);
1169 }
1170 get sink() {
1171 return new _StreamSinkWrapper(this);
1172 }
1173 get isClosed() {
1174 return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamContro ller._STATE_CLOSED)) !== 0;
1175 }
1176 get isPaused() {
1177 return false;
1178 }
1179 get hasListener() {
1180 return !dart.notNull(this[_isEmpty]);
1181 }
1182 get [_hasOneListener]() {
1183 dart.assert(!dart.notNull(this[_isEmpty]));
1184 return core.identical(this[_next][_next], this);
1185 }
1186 get [_isFiring]() {
1187 return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamContro ller._STATE_FIRING)) !== 0;
1188 }
1189 get [_isAddingStream]() {
1190 return (dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamContro ller._STATE_ADDSTREAM)) !== 0;
1191 }
1192 get [_mayAddEvent]() {
1193 return dart.notNull(this[_state]) < dart.notNull(_BroadcastStreamControl ler._STATE_CLOSED);
1194 }
1195 [_ensureDoneFuture]() {
1196 if (this[_doneFuture] !== null)
1197 return this[_doneFuture];
1198 return this[_doneFuture] = new _Future();
1199 }
1200 get [_isEmpty]() {
1201 return core.identical(this[_next], this);
1202 }
1203 [_addListener](subscription) {
1204 dart.assert(core.identical(subscription[_next], subscription));
1205 subscription[_previous] = this[_previous];
1206 subscription[_next] = this;
1207 this[_previous][_next] = subscription;
1208 this[_previous] = subscription;
1209 subscription[_eventState] = dart.notNull(this[_state]) & dart.notNull(_B roadcastStreamController._STATE_EVENT_ID);
1210 }
1211 [_removeListener](subscription) {
1212 dart.assert(core.identical(subscription[_controller], this));
1213 dart.assert(!dart.notNull(core.identical(subscription[_next], subscripti on)));
1214 let previous = subscription[_previous];
1215 let next = subscription[_next];
1216 previous[_next] = next;
1217 next[_previous] = previous;
1218 subscription[_next] = subscription[_previous] = subscription;
1219 }
1220 [_subscribe](onData, onError, onDone, cancelOnError) {
1221 if (this.isClosed) {
1222 if (onDone === null)
1223 onDone = _nullDoneHandler;
1224 return new _DoneStreamSubscription(onDone);
1225 }
1226 let subscription = new _BroadcastSubscription(this, onData, onError, onD one, cancelOnError);
1227 this[_addListener](dart.as(subscription, _BroadcastSubscription$(T)));
1228 if (core.identical(this[_next], this[_previous])) {
1229 _runGuarded(this[_onListen]);
1230 }
1231 return dart.as(subscription, StreamSubscription$(T));
1232 }
1233 [_recordCancel](subscription) {
1234 if (core.identical(subscription[_next], subscription))
1235 return null;
1236 dart.assert(!dart.notNull(core.identical(subscription[_next], subscripti on)));
1237 if (subscription[_isFiring]) {
1238 subscription._setRemoveAfterFiring();
1239 } else {
1240 dart.assert(!dart.notNull(core.identical(subscription[_next], subscrip tion)));
1241 this[_removeListener](subscription);
1242 if (!dart.notNull(this[_isFiring]) && dart.notNull(this[_isEmpty])) {
1243 this[_callOnCancel]();
1244 }
1245 }
1246 return null;
1247 }
1248 [_recordPause](subscription) {}
1249 [_recordResume](subscription) {}
1250 [_addEventError]() {
1251 if (this.isClosed) {
1252 return new core.StateError("Cannot add new events after calling close" );
1253 }
1254 dart.assert(this[_isAddingStream]);
1255 return new core.StateError("Cannot add new events while doing an addStre am");
1256 }
1257 add(data) {
1258 if (!dart.notNull(this[_mayAddEvent]))
1259 throw this[_addEventError]();
1260 this[_sendData](data);
1261 }
1262 addError(error, stackTrace) {
1263 if (stackTrace === void 0)
1264 stackTrace = null;
1265 error = _nonNullError(error);
1266 if (!dart.notNull(this[_mayAddEvent]))
1267 throw this[_addEventError]();
1268 let replacement = Zone.current.errorCallback(error, stackTrace);
1269 if (replacement !== null) {
1270 error = _nonNullError(replacement.error);
1271 stackTrace = replacement.stackTrace;
1272 }
1273 this[_sendError](error, stackTrace);
1274 }
1275 close() {
1276 if (this.isClosed) {
1277 dart.assert(this[_doneFuture] !== null);
1278 return this[_doneFuture];
1279 }
1280 if (!dart.notNull(this[_mayAddEvent]))
1281 throw this[_addEventError]();
1282 this[_state] = _BroadcastStreamController._STATE_CLOSED;
1283 let doneFuture = this[_ensureDoneFuture]();
1284 this[_sendDone]();
1285 return doneFuture;
1286 }
1287 get done() {
1288 return this[_ensureDoneFuture]();
1289 }
1290 addStream(stream, opt$) {
1291 let cancelOnError = opt$.cancelOnError === void 0 ? true : opt$.cancelOn Error;
1292 if (!dart.notNull(this[_mayAddEvent]))
1293 throw this[_addEventError]();
1294 this[_state] = _BroadcastStreamController._STATE_ADDSTREAM;
1295 this[_addStreamState] = dart.as(new _AddStreamState(this, stream, cancel OnError), _AddStreamState$(T));
1296 return this[_addStreamState].addStreamFuture;
1297 }
1298 [_add](data) {
1299 this[_sendData](data);
1300 }
1301 [_addError](error, stackTrace) {
1302 this[_sendError](error, stackTrace);
1303 }
1304 [_close]() {
1305 dart.assert(this[_isAddingStream]);
1306 let addState = this[_addStreamState];
1307 this[_addStreamState] = null;
1308 this[_state] = ~dart.notNull(_BroadcastStreamController._STATE_ADDSTREAM );
1309 addState.complete();
1310 }
1311 [_forEachListener](action) {
1312 if (this[_isFiring]) {
1313 throw new core.StateError("Cannot fire new event. Controller is alread y firing an event");
1314 }
1315 if (this[_isEmpty])
1316 return;
1317 let id = dart.notNull(this[_state]) & dart.notNull(_BroadcastStreamContr oller._STATE_EVENT_ID);
1318 this[_state] = dart.notNull(_BroadcastStreamController._STATE_EVENT_ID) | dart.notNull(_BroadcastStreamController._STATE_FIRING);
1319 let link = this[_next];
1320 while (!dart.notNull(core.identical(link, this))) {
1321 let subscription = dart.as(link, _BroadcastSubscription$(T));
1322 if (subscription._expectsEvent(id)) {
1323 subscription[_eventState] = _BroadcastSubscription[_STATE_FIRING];
1324 action(subscription);
1325 subscription._toggleEventId();
1326 link = subscription[_next];
1327 if (subscription[_removeAfterFiring]) {
1328 this[_removeListener](subscription);
1329 }
1330 subscription[_eventState] = ~dart.notNull(_BroadcastSubscription[_ST ATE_FIRING]);
1331 } else {
1332 link = subscription[_next];
1333 }
1334 }
1335 this[_state] = ~dart.notNull(_BroadcastStreamController._STATE_FIRING);
1336 if (this[_isEmpty]) {
1337 this[_callOnCancel]();
1338 }
1339 }
1340 [_callOnCancel]() {
1341 dart.assert(this[_isEmpty]);
1342 if (dart.notNull(this.isClosed) && dart.notNull(this[_doneFuture][_mayCo mplete])) {
1343 this[_doneFuture]._asyncComplete(null);
1344 }
1345 _runGuarded(this[_onCancel]);
1346 }
1347 }
1348 _BroadcastStreamController._STATE_INITIAL = 0;
1349 _BroadcastStreamController._STATE_EVENT_ID = 1;
1350 _BroadcastStreamController._STATE_FIRING = 2;
1351 _BroadcastStreamController._STATE_CLOSED = 4;
1352 _BroadcastStreamController._STATE_ADDSTREAM = 8;
1353 return _BroadcastStreamController;
1354 });
1355 let _BroadcastStreamController = _BroadcastStreamController$(dart.dynamic);
1356 let _SyncBroadcastStreamController$ = dart.generic(function(T) {
1357 class _SyncBroadcastStreamController extends _BroadcastStreamController$(T) {
1358 _SyncBroadcastStreamController(onListen, onCancel) {
1359 super._BroadcastStreamController(onListen, onCancel);
1360 }
1361 [_sendData](data) {
1362 if (this[_isEmpty])
1363 return;
1364 if (this[_hasOneListener]) {
1365 this[_state] = _BroadcastStreamController[_STATE_FIRING];
1366 let subscription = dart.as(this[_next], _BroadcastSubscription);
1367 subscription._add(data);
1368 this[_state] = ~dart.notNull(_BroadcastStreamController[_STATE_FIRING] );
1369 if (this[_isEmpty]) {
1370 this[_callOnCancel]();
1371 }
1372 return;
1373 }
1374 this[_forEachListener](((subscription) => {
1375 subscription._add(data);
1376 }).bind(this));
1377 }
1378 [_sendError](error, stackTrace) {
1379 if (this[_isEmpty])
1380 return;
1381 this[_forEachListener](((subscription) => {
1382 subscription._addError(error, stackTrace);
1383 }).bind(this));
1384 }
1385 [_sendDone]() {
1386 if (!dart.notNull(this[_isEmpty])) {
1387 this[_forEachListener](dart.closureWrap(((subscription) => {
1388 subscription._close();
1389 }).bind(this), "(_BufferingStreamSubscription<T>) → void"));
1390 } else {
1391 dart.assert(this[_doneFuture] !== null);
1392 dart.assert(this[_doneFuture][_mayComplete]);
1393 this[_doneFuture]._asyncComplete(null);
1394 }
1395 }
1396 }
1397 return _SyncBroadcastStreamController;
1398 });
1399 let _SyncBroadcastStreamController = _SyncBroadcastStreamController$(dart.dyna mic);
1400 let _AsyncBroadcastStreamController$ = dart.generic(function(T) {
1401 class _AsyncBroadcastStreamController extends _BroadcastStreamController$(T) {
1402 _AsyncBroadcastStreamController(onListen, onCancel) {
1403 super._BroadcastStreamController(onListen, onCancel);
1404 }
1405 [_sendData](data) {
1406 for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) {
1407 let subscription = dart.as(link, _BroadcastSubscription$(T));
1408 subscription._addPending(new _DelayedData(data));
1409 }
1410 }
1411 [_sendError](error, stackTrace) {
1412 for (let link = this[_next]; !dart.notNull(core.identical(link, this)); link = link[_next]) {
1413 let subscription = dart.as(link, _BroadcastSubscription$(T));
1414 subscription._addPending(new _DelayedError(error, stackTrace));
1415 }
1416 }
1417 [_sendDone]() {
1418 if (!dart.notNull(this[_isEmpty])) {
1419 for (let link = this[_next]; !dart.notNull(core.identical(link, this)) ; link = link[_next]) {
1420 let subscription = dart.as(link, _BroadcastSubscription$(T));
1421 subscription._addPending(new _DelayedDone());
1422 }
1423 } else {
1424 dart.assert(this[_doneFuture] !== null);
1425 dart.assert(this[_doneFuture][_mayComplete]);
1426 this[_doneFuture]._asyncComplete(null);
1427 }
1428 }
1429 }
1430 return _AsyncBroadcastStreamController;
1431 });
1432 let _AsyncBroadcastStreamController = _AsyncBroadcastStreamController$(dart.dy namic);
1433 let _addPendingEvent = Symbol('_addPendingEvent');
1434 let _STATE_CLOSED = Symbol('_STATE_CLOSED');
1435 let _AsBroadcastStreamController$ = dart.generic(function(T) {
1436 class _AsBroadcastStreamController extends _SyncBroadcastStreamController$(T ) {
1437 _AsBroadcastStreamController(onListen, onCancel) {
1438 this[_pending] = null;
1439 super._SyncBroadcastStreamController(onListen, onCancel);
1440 }
1441 get [_hasPending]() {
1442 return dart.notNull(this[_pending] !== null) && !dart.notNull(this[_pend ing].isEmpty);
1443 }
1444 [_addPendingEvent](event) {
1445 if (this[_pending] === null) {
1446 this[_pending] = new _StreamImplEvents();
1447 }
1448 this[_pending].add(event);
1449 }
1450 add(data) {
1451 if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) {
1452 this[_addPendingEvent](new _DelayedData(data));
1453 return;
1454 }
1455 super.add(data);
1456 while (this[_hasPending]) {
1457 this[_pending].handleNext(this);
1458 }
1459 }
1460 addError(error, stackTrace) {
1461 if (stackTrace === void 0)
1462 stackTrace = null;
1463 if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) {
1464 this[_addPendingEvent](new _DelayedError(error, stackTrace));
1465 return;
1466 }
1467 if (!dart.notNull(this[_mayAddEvent]))
1468 throw this[_addEventError]();
1469 this[_sendError](error, stackTrace);
1470 while (this[_hasPending]) {
1471 this[_pending].handleNext(this);
1472 }
1473 }
1474 close() {
1475 if (!dart.notNull(this.isClosed) && dart.notNull(this[_isFiring])) {
1476 this[_addPendingEvent](new _DelayedDone());
1477 this[_state] = _BroadcastStreamController[_STATE_CLOSED];
1478 return super.done;
1479 }
1480 let result = super.close();
1481 dart.assert(!dart.notNull(this[_hasPending]));
1482 return result;
1483 }
1484 [_callOnCancel]() {
1485 if (this[_hasPending]) {
1486 this[_pending].clear();
1487 this[_pending] = null;
1488 }
1489 super._callOnCancel();
1490 }
1491 }
1492 return _AsBroadcastStreamController;
1493 });
1494 let _AsBroadcastStreamController = _AsBroadcastStreamController$(dart.dynamic) ;
1495 let _pauseCount = Symbol('_pauseCount');
1496 let _resume = Symbol('_resume');
1497 let _DoneSubscription$ = dart.generic(function(T) {
1498 class _DoneSubscription extends core.Object {
1499 _DoneSubscription() {
1500 this[_pauseCount] = 0;
1501 }
1502 onData(handleData) {}
1503 onError(handleError) {}
1504 onDone(handleDone) {}
1505 pause(resumeSignal) {
1506 if (resumeSignal === void 0)
1507 resumeSignal = null;
1508 if (resumeSignal !== null)
1509 resumeSignal.then(this[_resume]);
1510 this[_pauseCount] = dart.notNull(this[_pauseCount]) + 1;
1511 }
1512 resume() {
1513 this[_resume](null);
1514 }
1515 [_resume](_) {
1516 if (dart.notNull(this[_pauseCount]) > 0)
1517 this[_pauseCount] = dart.notNull(this[_pauseCount]) - 1;
1518 }
1519 cancel() {
1520 return new _Future.immediate(null);
1521 }
1522 get isPaused() {
1523 return dart.notNull(this[_pauseCount]) > 0;
1524 }
1525 asFuture(value) {
1526 if (value === void 0)
1527 value = null;
1528 return new _Future();
1529 }
1530 }
1531 return _DoneSubscription;
1532 });
1533 let _DoneSubscription = _DoneSubscription$(dart.dynamic);
1534 class DeferredLibrary extends core.Object {
1535 DeferredLibrary(libraryName, opt$) {
1536 let uri = opt$.uri === void 0 ? null : opt$.uri;
1537 this.libraryName = libraryName;
1538 this.uri = uri;
1539 }
1540 load() {
1541 throw 'DeferredLibrary not supported. ' + 'please use the `import "lib.dar t" deferred as lib` syntax.';
1542 }
1543 }
1544 let _s = Symbol('_s');
1545 class DeferredLoadException extends core.Object {
1546 DeferredLoadException($_s) {
1547 this[_s] = $_s;
1548 }
1549 toString() {
1550 return `DeferredLoadException: '${this[_s]}'`;
1551 }
1552 }
1553 let Future$ = dart.generic(function(T) {
1554 class Future extends core.Object {
1555 Future(computation) {
1556 let result = new _Future();
1557 Timer.run((() => {
1558 try {
1559 result._complete(computation());
1560 } catch (e) {
1561 let s = dart.stackTrace(e);
1562 _completeWithErrorCallback(result, e, s);
1563 }
1564
1565 }).bind(this));
1566 return dart.as(result, Future$(T));
1567 }
1568 Future$microtask(computation) {
1569 let result = new _Future();
1570 scheduleMicrotask((() => {
1571 try {
1572 result._complete(computation());
1573 } catch (e) {
1574 let s = dart.stackTrace(e);
1575 _completeWithErrorCallback(result, e, s);
1576 }
1577
1578 }).bind(this));
1579 return dart.as(result, Future$(T));
1580 }
1581 Future$sync(computation) {
1582 try {
1583 let result = computation();
1584 return new Future.value(result);
1585 } catch (error) {
1586 let stackTrace = dart.stackTrace(error);
1587 return new Future.error(error, stackTrace);
1588 }
1589
1590 }
1591 Future$value(value) {
1592 if (value === void 0)
1593 value = null;
1594 return new _Future.immediate(value);
1595 }
1596 Future$error(error, stackTrace) {
1597 if (stackTrace === void 0)
1598 stackTrace = null;
1599 error = _nonNullError(error);
1600 if (!dart.notNull(core.identical(Zone.current, _ROOT_ZONE))) {
1601 let replacement = Zone.current.errorCallback(error, stackTrace);
1602 if (replacement !== null) {
1603 error = _nonNullError(replacement.error);
1604 stackTrace = replacement.stackTrace;
1605 }
1606 }
1607 return new _Future.immediateError(error, stackTrace);
1608 }
1609 Future$delayed(duration, computation) {
1610 if (computation === void 0)
1611 computation = null;
1612 let result = new _Future();
1613 new Timer(duration, (() => {
1614 try {
1615 result._complete(computation === null ? null : computation());
1616 } catch (e) {
1617 let s = dart.stackTrace(e);
1618 _completeWithErrorCallback(result, e, s);
1619 }
1620
1621 }).bind(this));
1622 return dart.as(result, Future$(T));
1623 }
1624 static wait(futures, opt$) {
1625 let eagerError = opt$.eagerError === void 0 ? false : opt$.eagerError;
1626 let cleanUp = opt$.cleanUp === void 0 ? null : opt$.cleanUp;
1627 let result = new _Future();
1628 let values = null;
1629 let remaining = 0;
1630 let error = null;
1631 let stackTrace = null;
1632 // Function handleError: (dynamic, dynamic) → void
1633 function handleError(theError, theStackTrace) {
1634 remaining = dart.notNull(remaining) - 1;
1635 if (values !== null) {
1636 if (cleanUp !== null) {
1637 for (let value of values) {
1638 if (value !== null) {
1639 new Future.sync(() => {
1640 dart.dinvokef(cleanUp, value);
1641 });
1642 }
1643 }
1644 }
1645 values = null;
1646 if (remaining === 0 || dart.notNull(eagerError)) {
1647 result._completeError(theError, dart.as(theStackTrace, core.StackT race));
1648 } else {
1649 error = theError;
1650 stackTrace = dart.as(theStackTrace, core.StackTrace);
1651 }
1652 } else if (remaining === 0 && !dart.notNull(eagerError)) {
1653 result._completeError(error, stackTrace);
1654 }
1655 }
1656 for (let future of futures) {
1657 let pos = (($tmp) => remaining = dart.notNull($tmp) + 1, $tmp)(remaini ng);
1658 future.then(((value) => {
1659 remaining = dart.notNull(remaining) - 1;
1660 if (values !== null) {
1661 values.set(pos, value);
1662 if (remaining === 0) {
1663 result._completeWithValue(values);
1664 }
1665 } else {
1666 if (dart.notNull(cleanUp !== null) && dart.notNull(value !== null) ) {
1667 new Future.sync(() => {
1668 dart.dinvokef(cleanUp, value);
1669 });
1670 }
1671 if (remaining === 0 && !dart.notNull(eagerError)) {
1672 result._completeError(error, stackTrace);
1673 }
1674 }
1675 }).bind(this), {onError: handleError});
1676 }
1677 if (remaining === 0) {
1678 return dart.as(new Future.value(/* Unimplemented const */new List.from ([])), Future$(core.List));
1679 }
1680 values = new core.List(remaining);
1681 return result;
1682 }
1683 static forEach(input, f) {
1684 let iterator = input.iterator;
1685 return doWhile((() => {
1686 if (!dart.notNull(iterator.moveNext()))
1687 return false;
1688 return new Future.sync((() => dart.dinvokef(f, iterator.current)).bind (this)).then((_) => true);
1689 }).bind(this));
1690 }
1691 static doWhile(f) {
1692 let doneSignal = new _Future();
1693 let nextIteration = null;
1694 nextIteration = Zone.current.bindUnaryCallback(((keepGoing) => {
1695 if (keepGoing) {
1696 new Future.sync(f).then(dart.as(nextIteration, dart.throw_("Unimplem ented type (dynamic) → dynamic")), {onError: doneSignal[_completeError]});
1697 } else {
1698 doneSignal._complete(null);
1699 }
1700 }).bind(this), {runGuarded: true});
1701 dart.dinvokef(nextIteration, true);
1702 return doneSignal;
1703 }
1704 }
1705 dart.defineNamedConstructor(Future, 'microtask');
1706 dart.defineNamedConstructor(Future, 'sync');
1707 dart.defineNamedConstructor(Future, 'value');
1708 dart.defineNamedConstructor(Future, 'error');
1709 dart.defineNamedConstructor(Future, 'delayed');
1710 dart.defineLazyProperties(Future, {
1711 get _nullFuture() {
1712 return dart.as(new Future.value(null), _Future);
1713 }
1714 });
1715 return Future;
1716 });
1717 let Future = Future$(dart.dynamic);
1718 class TimeoutException extends core.Object {
1719 TimeoutException(message, duration) {
1720 if (duration === void 0)
1721 duration = null;
1722 this.message = message;
1723 this.duration = duration;
1724 }
1725 toString() {
1726 let result = "TimeoutException";
1727 if (this.duration !== null)
1728 result = `TimeoutException after ${this.duration}`;
1729 if (this.message !== null)
1730 result = `${result}: ${this.message}`;
1731 return result;
1732 }
1733 }
1734 let Completer$ = dart.generic(function(T) {
1735 class Completer extends core.Object {
1736 Completer() {
1737 return new _AsyncCompleter();
1738 }
1739 Completer$sync() {
1740 return new _SyncCompleter();
1741 }
1742 }
1743 dart.defineNamedConstructor(Completer, 'sync');
1744 return Completer;
1745 });
1746 let Completer = Completer$(dart.dynamic);
1747 // Function _completeWithErrorCallback: (_Future<dynamic>, dynamic, dynamic) → void
1748 function _completeWithErrorCallback(result, error, stackTrace) {
1749 let replacement = Zone.current.errorCallback(error, dart.as(stackTrace, core .StackTrace));
1750 if (replacement !== null) {
1751 error = _nonNullError(replacement.error);
1752 stackTrace = replacement.stackTrace;
1753 }
1754 result._completeError(error, dart.as(stackTrace, core.StackTrace));
1755 }
1756 // Function _nonNullError: (Object) → Object
1757 function _nonNullError(error) {
1758 return error !== null ? error : new core.NullThrownError();
1759 }
1760 let _Completer$ = dart.generic(function(T) {
1761 class _Completer extends core.Object {
1762 _Completer() {
1763 this.future = new _Future();
1764 }
1765 completeError(error, stackTrace) {
1766 if (stackTrace === void 0)
1767 stackTrace = null;
1768 error = _nonNullError(error);
1769 if (!dart.notNull(this.future[_mayComplete]))
1770 throw new core.StateError("Future already completed");
1771 let replacement = Zone.current.errorCallback(error, stackTrace);
1772 if (replacement !== null) {
1773 error = _nonNullError(replacement.error);
1774 stackTrace = replacement.stackTrace;
1775 }
1776 this[_completeError](error, stackTrace);
1777 }
1778 get isCompleted() {
1779 return !dart.notNull(this.future[_mayComplete]);
1780 }
1781 }
1782 return _Completer;
1783 });
1784 let _Completer = _Completer$(dart.dynamic);
1785 let _AsyncCompleter$ = dart.generic(function(T) {
1786 class _AsyncCompleter extends _Completer$(T) {
1787 complete(value) {
1788 if (value === void 0)
1789 value = null;
1790 if (!dart.notNull(this.future[_mayComplete]))
1791 throw new core.StateError("Future already completed");
1792 this.future._asyncComplete(value);
1793 }
1794 [_completeError](error, stackTrace) {
1795 this.future._asyncCompleteError(error, stackTrace);
1796 }
1797 }
1798 return _AsyncCompleter;
1799 });
1800 let _AsyncCompleter = _AsyncCompleter$(dart.dynamic);
1801 let _SyncCompleter$ = dart.generic(function(T) {
1802 class _SyncCompleter extends _Completer$(T) {
1803 complete(value) {
1804 if (value === void 0)
1805 value = null;
1806 if (!dart.notNull(this.future[_mayComplete]))
1807 throw new core.StateError("Future already completed");
1808 this.future._complete(value);
1809 }
1810 [_completeError](error, stackTrace) {
1811 this.future._completeError(error, stackTrace);
1812 }
1813 }
1814 return _SyncCompleter;
1815 });
1816 let _SyncCompleter = _SyncCompleter$(dart.dynamic);
1817 let _nextListener = Symbol('_nextListener');
1818 let _onValue = Symbol('_onValue');
1819 let _errorTest = Symbol('_errorTest');
1820 let _whenCompleteAction = Symbol('_whenCompleteAction');
1821 class _FutureListener extends core.Object {
1822 _FutureListener$then(result, onValue, errorCallback) {
1823 this.result = result;
1824 this.callback = onValue;
1825 this.errorCallback = errorCallback;
1826 this.state = errorCallback === null ? _FutureListener.STATE_THEN : _Future Listener.STATE_THEN_ONERROR;
1827 this[_nextListener] = null;
1828 }
1829 _FutureListener$catchError(result, errorCallback, test) {
1830 this.result = result;
1831 this.errorCallback = errorCallback;
1832 this.callback = test;
1833 this.state = test === null ? _FutureListener.STATE_CATCHERROR : _FutureLis tener.STATE_CATCHERROR_TEST;
1834 this[_nextListener] = null;
1835 }
1836 _FutureListener$whenComplete(result, onComplete) {
1837 this.result = result;
1838 this.callback = onComplete;
1839 this.errorCallback = null;
1840 this.state = _FutureListener.STATE_WHENCOMPLETE;
1841 this[_nextListener] = null;
1842 }
1843 _FutureListener$chain(result) {
1844 this.result = result;
1845 this.callback = null;
1846 this.errorCallback = null;
1847 this.state = _FutureListener.STATE_CHAIN;
1848 this[_nextListener] = null;
1849 }
1850 get [_zone]() {
1851 return this.result[_zone];
1852 }
1853 get handlesValue() {
1854 return (dart.notNull(this.state) & dart.notNull(_FutureListener.MASK_VALUE )) !== 0;
1855 }
1856 get handlesError() {
1857 return (dart.notNull(this.state) & dart.notNull(_FutureListener.MASK_ERROR )) !== 0;
1858 }
1859 get hasErrorTest() {
1860 return this.state === _FutureListener.STATE_CATCHERROR_TEST;
1861 }
1862 get handlesComplete() {
1863 return this.state === _FutureListener.STATE_WHENCOMPLETE;
1864 }
1865 get [_onValue]() {
1866 dart.assert(this.handlesValue);
1867 return dart.as(this.callback, _FutureOnValue);
1868 }
1869 get [_onError]() {
1870 return this.errorCallback;
1871 }
1872 get [_errorTest]() {
1873 dart.assert(this.hasErrorTest);
1874 return dart.as(this.callback, _FutureErrorTest);
1875 }
1876 get [_whenCompleteAction]() {
1877 dart.assert(this.handlesComplete);
1878 return dart.as(this.callback, _FutureAction);
1879 }
1880 }
1881 dart.defineNamedConstructor(_FutureListener, 'then');
1882 dart.defineNamedConstructor(_FutureListener, 'catchError');
1883 dart.defineNamedConstructor(_FutureListener, 'whenComplete');
1884 dart.defineNamedConstructor(_FutureListener, 'chain');
1885 _FutureListener.MASK_VALUE = 1;
1886 _FutureListener.MASK_ERROR = 2;
1887 _FutureListener.MASK_TEST_ERROR = 4;
1888 _FutureListener.MASK_WHENCOMPLETE = 8;
1889 _FutureListener.STATE_CHAIN = 0;
1890 _FutureListener.STATE_THEN = _FutureListener.MASK_VALUE;
1891 _FutureListener.STATE_THEN_ONERROR = dart.notNull(_FutureListener.MASK_VALUE) | dart.notNull(_FutureListener.MASK_ERROR);
1892 _FutureListener.STATE_CATCHERROR = _FutureListener.MASK_ERROR;
1893 _FutureListener.STATE_CATCHERROR_TEST = dart.notNull(_FutureListener.MASK_ERRO R) | dart.notNull(_FutureListener.MASK_TEST_ERROR);
1894 _FutureListener.STATE_WHENCOMPLETE = _FutureListener.MASK_WHENCOMPLETE;
1895 let _resultOrListeners = Symbol('_resultOrListeners');
1896 let _asyncComplete = Symbol('_asyncComplete');
1897 let _asyncCompleteError = Symbol('_asyncCompleteError');
1898 let _isChained = Symbol('_isChained');
1899 let _isComplete = Symbol('_isComplete');
1900 let _hasValue = Symbol('_hasValue');
1901 let _hasError = Symbol('_hasError');
1902 let _markPendingCompletion = Symbol('_markPendingCompletion');
1903 let _value = Symbol('_value');
1904 let _error = Symbol('_error');
1905 let _setValue = Symbol('_setValue');
1906 let _setErrorObject = Symbol('_setErrorObject');
1907 let _setError = Symbol('_setError');
1908 let _removeListeners = Symbol('_removeListeners');
1909 let _chainForeignFuture = Symbol('_chainForeignFuture');
1910 let _chainCoreFuture = Symbol('_chainCoreFuture');
1911 let _completeWithValue = Symbol('_completeWithValue');
1912 let _propagateToListeners = Symbol('_propagateToListeners');
1913 let _Future$ = dart.generic(function(T) {
1914 class _Future extends core.Object {
1915 _Future() {
1916 this[_zone] = Zone.current;
1917 this[_state] = _Future._INCOMPLETE;
1918 this[_resultOrListeners] = null;
1919 }
1920 _Future$immediate(value) {
1921 this[_zone] = Zone.current;
1922 this[_state] = _Future._INCOMPLETE;
1923 this[_resultOrListeners] = null;
1924 this[_asyncComplete](value);
1925 }
1926 _Future$immediateError(error, stackTrace) {
1927 if (stackTrace === void 0)
1928 stackTrace = null;
1929 this[_zone] = Zone.current;
1930 this[_state] = _Future._INCOMPLETE;
1931 this[_resultOrListeners] = null;
1932 this[_asyncCompleteError](error, stackTrace);
1933 }
1934 get [_mayComplete]() {
1935 return this[_state] === _Future._INCOMPLETE;
1936 }
1937 get [_isChained]() {
1938 return this[_state] === _Future._CHAINED;
1939 }
1940 get [_isComplete]() {
1941 return dart.notNull(this[_state]) >= dart.notNull(_Future._VALUE);
1942 }
1943 get [_hasValue]() {
1944 return this[_state] === _Future._VALUE;
1945 }
1946 get [_hasError]() {
1947 return this[_state] === _Future._ERROR;
1948 }
1949 set [_isChained](value) {
1950 if (value) {
1951 dart.assert(!dart.notNull(this[_isComplete]));
1952 this[_state] = _Future._CHAINED;
1953 } else {
1954 dart.assert(this[_isChained]);
1955 this[_state] = _Future._INCOMPLETE;
1956 }
1957 }
1958 then(f, opt$) {
1959 let onError = opt$.onError === void 0 ? null : opt$.onError;
1960 let result = new _Future();
1961 if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) {
1962 f = dart.closureWrap(result[_zone].registerUnaryCallback(f), "(T) → dy namic");
1963 if (onError !== null) {
1964 onError = _registerErrorHandler(onError, result[_zone]);
1965 }
1966 }
1967 this[_addListener](new _FutureListener.then(result, f, onError));
1968 return result;
1969 }
1970 catchError(onError, opt$) {
1971 let test = opt$.test === void 0 ? null : opt$.test;
1972 let result = new _Future();
1973 if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) {
1974 onError = _registerErrorHandler(onError, result[_zone]);
1975 if (test !== null)
1976 test = dart.closureWrap(result[_zone].registerUnaryCallback(test), " (dynamic) → bool");
1977 }
1978 this[_addListener](new _FutureListener.catchError(result, onError, test) );
1979 return result;
1980 }
1981 whenComplete(action) {
1982 let result = new _Future();
1983 if (!dart.notNull(core.identical(result[_zone], _ROOT_ZONE))) {
1984 action = result[_zone].registerCallback(action);
1985 }
1986 this[_addListener](new _FutureListener.whenComplete(result, action));
1987 return dart.as(result, Future$(T));
1988 }
1989 asStream() {
1990 return dart.as(new Stream.fromFuture(this), Stream$(T));
1991 }
1992 [_markPendingCompletion]() {
1993 if (!dart.notNull(this[_mayComplete]))
1994 throw new core.StateError("Future already completed");
1995 this[_state] = _Future._PENDING_COMPLETE;
1996 }
1997 get [_value]() {
1998 dart.assert(dart.notNull(this[_isComplete]) && dart.notNull(this[_hasVal ue]));
1999 return dart.as(this[_resultOrListeners], T);
2000 }
2001 get [_error]() {
2002 dart.assert(dart.notNull(this[_isComplete]) && dart.notNull(this[_hasErr or]));
2003 return dart.as(this[_resultOrListeners], AsyncError);
2004 }
2005 [_setValue](value) {
2006 dart.assert(!dart.notNull(this[_isComplete]));
2007 this[_state] = _Future._VALUE;
2008 this[_resultOrListeners] = value;
2009 }
2010 [_setErrorObject](error) {
2011 dart.assert(!dart.notNull(this[_isComplete]));
2012 this[_state] = _Future._ERROR;
2013 this[_resultOrListeners] = error;
2014 }
2015 [_setError](error, stackTrace) {
2016 this[_setErrorObject](new AsyncError(error, stackTrace));
2017 }
2018 [_addListener](listener) {
2019 dart.assert(listener[_nextListener] === null);
2020 if (this[_isComplete]) {
2021 this[_zone].scheduleMicrotask((() => {
2022 _propagateToListeners(this, listener);
2023 }).bind(this));
2024 } else {
2025 listener[_nextListener] = dart.as(this[_resultOrListeners], _FutureLis tener);
2026 this[_resultOrListeners] = listener;
2027 }
2028 }
2029 [_removeListeners]() {
2030 dart.assert(!dart.notNull(this[_isComplete]));
2031 let current = dart.as(this[_resultOrListeners], _FutureListener);
2032 this[_resultOrListeners] = null;
2033 let prev = null;
2034 while (current !== null) {
2035 let next = current[_nextListener];
2036 current[_nextListener] = prev;
2037 prev = current;
2038 current = next;
2039 }
2040 return prev;
2041 }
2042 static [_chainForeignFuture](source, target) {
2043 dart.assert(!dart.notNull(target[_isComplete]));
2044 dart.assert(!dart.is(source, _Future));
2045 target[_isChained] = true;
2046 source.then(((value) => {
2047 dart.assert(target[_isChained]);
2048 target._completeWithValue(value);
2049 }).bind(this), {onError: ((error, stackTrace) => {
2050 if (stackTrace === void 0)
2051 stackTrace = null;
2052 dart.assert(target[_isChained]);
2053 target._completeError(error, dart.as(stackTrace, core.StackTrace));
2054 }).bind(this)});
2055 }
2056 static [_chainCoreFuture](source, target) {
2057 dart.assert(!dart.notNull(target[_isComplete]));
2058 dart.assert(dart.is(source, _Future));
2059 target[_isChained] = true;
2060 let listener = new _FutureListener.chain(target);
2061 if (source[_isComplete]) {
2062 _propagateToListeners(source, listener);
2063 } else {
2064 source._addListener(listener);
2065 }
2066 }
2067 [_complete](value) {
2068 dart.assert(!dart.notNull(this[_isComplete]));
2069 if (dart.is(value, Future)) {
2070 if (dart.is(value, _Future)) {
2071 _chainCoreFuture(dart.as(value, _Future), this);
2072 } else {
2073 _chainForeignFuture(dart.as(value, Future), this);
2074 }
2075 } else {
2076 let listeners = this[_removeListeners]();
2077 this[_setValue](dart.as(value, T));
2078 _propagateToListeners(this, listeners);
2079 }
2080 }
2081 [_completeWithValue](value) {
2082 dart.assert(!dart.notNull(this[_isComplete]));
2083 dart.assert(!dart.is(value, Future));
2084 let listeners = this[_removeListeners]();
2085 this[_setValue](dart.as(value, T));
2086 _propagateToListeners(this, listeners);
2087 }
2088 [_completeError](error, stackTrace) {
2089 if (stackTrace === void 0)
2090 stackTrace = null;
2091 dart.assert(!dart.notNull(this[_isComplete]));
2092 let listeners = this[_removeListeners]();
2093 this[_setError](error, stackTrace);
2094 _propagateToListeners(this, listeners);
2095 }
2096 [_asyncComplete](value) {
2097 dart.assert(!dart.notNull(this[_isComplete]));
2098 if (value === null) {
2099 } else if (dart.is(value, Future)) {
2100 let typedFuture = dart.as(value, Future$(T));
2101 if (dart.is(typedFuture, _Future)) {
2102 let coreFuture = dart.as(typedFuture, _Future$(T));
2103 if (dart.notNull(coreFuture[_isComplete]) && dart.notNull(coreFuture [_hasError])) {
2104 this[_markPendingCompletion]();
2105 this[_zone].scheduleMicrotask((() => {
2106 _chainCoreFuture(coreFuture, this);
2107 }).bind(this));
2108 } else {
2109 _chainCoreFuture(coreFuture, this);
2110 }
2111 } else {
2112 _chainForeignFuture(typedFuture, this);
2113 }
2114 return;
2115 } else {
2116 let typedValue = dart.as(value, T);
2117 }
2118 this[_markPendingCompletion]();
2119 this[_zone].scheduleMicrotask((() => {
2120 this[_completeWithValue](value);
2121 }).bind(this));
2122 }
2123 [_asyncCompleteError](error, stackTrace) {
2124 dart.assert(!dart.notNull(this[_isComplete]));
2125 this[_markPendingCompletion]();
2126 this[_zone].scheduleMicrotask((() => {
2127 this[_completeError](error, stackTrace);
2128 }).bind(this));
2129 }
2130 static [_propagateToListeners](source, listeners) {
2131 while (true) {
2132 dart.assert(source[_isComplete]);
2133 let hasError = source[_hasError];
2134 if (listeners === null) {
2135 if (hasError) {
2136 let asyncError = source[_error];
2137 source[_zone].handleUncaughtError(asyncError.error, asyncError.sta ckTrace);
2138 }
2139 return;
2140 }
2141 while (listeners[_nextListener] !== null) {
2142 let listener = listeners;
2143 listeners = listener[_nextListener];
2144 listener[_nextListener] = null;
2145 _propagateToListeners(source, listener);
2146 }
2147 let listener = listeners;
2148 let listenerHasValue = true;
2149 let sourceValue = hasError ? null : source[_value];
2150 let listenerValueOrError = sourceValue;
2151 let isPropagationAborted = false;
2152 if (dart.notNull(hasError) || dart.notNull(listener.handlesValue) || d art.notNull(listener.handlesComplete)) {
2153 let zone = listener[_zone];
2154 if (dart.notNull(hasError) && !dart.notNull(source[_zone].inSameErro rZone(zone))) {
2155 let asyncError = source[_error];
2156 source[_zone].handleUncaughtError(asyncError.error, asyncError.sta ckTrace);
2157 return;
2158 }
2159 let oldZone = null;
2160 if (!dart.notNull(core.identical(Zone.current, zone))) {
2161 oldZone = Zone._enter(zone);
2162 }
2163 // Function handleValueCallback: () → bool
2164 function handleValueCallback() {
2165 try {
2166 listenerValueOrError = zone.runUnary(listener[_onValue], sourceV alue);
2167 return true;
2168 } catch (e) {
2169 let s = dart.stackTrace(e);
2170 listenerValueOrError = new AsyncError(e, s);
2171 return false;
2172 }
2173
2174 }
2175 // Function handleError: () → void
2176 function handleError() {
2177 let asyncError = source[_error];
2178 let matchesTest = true;
2179 if (listener.hasErrorTest) {
2180 let test = listener[_errorTest];
2181 try {
2182 matchesTest = dart.as(zone.runUnary(test, asyncError.error), c ore.bool);
2183 } catch (e) {
2184 let s = dart.stackTrace(e);
2185 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s);
2186 listenerHasValue = false;
2187 return;
2188 }
2189
2190 }
2191 let errorCallback = listener[_onError];
2192 if (dart.notNull(matchesTest) && dart.notNull(errorCallback !== nu ll)) {
2193 try {
2194 if (dart.is(errorCallback, ZoneBinaryCallback)) {
2195 listenerValueOrError = zone.runBinary(errorCallback, asyncEr ror.error, asyncError.stackTrace);
2196 } else {
2197 listenerValueOrError = zone.runUnary(dart.as(errorCallback, dart.throw_("Unimplemented type (dynamic) → dynamic")), asyncError.error);
2198 }
2199 } catch (e) {
2200 let s = dart.stackTrace(e);
2201 listenerValueOrError = core.identical(asyncError.error, e) ? a syncError : new AsyncError(e, s);
2202 listenerHasValue = false;
2203 return;
2204 }
2205
2206 listenerHasValue = true;
2207 } else {
2208 listenerValueOrError = asyncError;
2209 listenerHasValue = false;
2210 }
2211 }
2212 // Function handleWhenCompleteCallback: () → void
2213 function handleWhenCompleteCallback() {
2214 let completeResult = null;
2215 try {
2216 completeResult = zone.run(listener[_whenCompleteAction]);
2217 } catch (e) {
2218 let s = dart.stackTrace(e);
2219 if (dart.notNull(hasError) && dart.notNull(core.identical(source [_error].error, e))) {
2220 listenerValueOrError = source[_error];
2221 } else {
2222 listenerValueOrError = new AsyncError(e, s);
2223 }
2224 listenerHasValue = false;
2225 return;
2226 }
2227
2228 if (dart.is(completeResult, Future)) {
2229 let result = listener.result;
2230 result[_isChained] = true;
2231 isPropagationAborted = true;
2232 dart.dinvoke(completeResult, 'then', (ignored) => {
2233 _propagateToListeners(source, new _FutureListener.chain(result ));
2234 }, {
2235 onError: (error, stackTrace) => {
2236 if (stackTrace === void 0)
2237 stackTrace = null;
2238 if (!dart.is(completeResult, _Future)) {
2239 completeResult = new _Future();
2240 dart.dinvoke(completeResult, '_setError', error, stackTrac e);
2241 }
2242 _propagateToListeners(dart.as(completeResult, _Future), new _FutureListener.chain(result));
2243 }
2244 });
2245 }
2246 }
2247 if (!dart.notNull(hasError)) {
2248 if (listener.handlesValue) {
2249 listenerHasValue = handleValueCallback();
2250 }
2251 } else {
2252 handleError();
2253 }
2254 if (listener.handlesComplete) {
2255 handleWhenCompleteCallback();
2256 }
2257 if (oldZone !== null)
2258 Zone._leave(oldZone);
2259 if (isPropagationAborted)
2260 return;
2261 if (dart.notNull(listenerHasValue) && !dart.notNull(core.identical(s ourceValue, listenerValueOrError)) && dart.notNull(dart.is(listenerValueOrError, Future))) {
2262 let chainSource = dart.as(listenerValueOrError, Future);
2263 let result = listener.result;
2264 if (dart.is(chainSource, _Future)) {
2265 if (chainSource[_isComplete]) {
2266 result[_isChained] = true;
2267 source = chainSource;
2268 listeners = new _FutureListener.chain(result);
2269 continue;
2270 } else {
2271 _chainCoreFuture(chainSource, result);
2272 }
2273 } else {
2274 _chainForeignFuture(chainSource, result);
2275 }
2276 return;
2277 }
2278 }
2279 let result = listener.result;
2280 listeners = result._removeListeners();
2281 if (listenerHasValue) {
2282 result._setValue(listenerValueOrError);
2283 } else {
2284 let asyncError = dart.as(listenerValueOrError, AsyncError);
2285 result._setErrorObject(asyncError);
2286 }
2287 source = result;
2288 }
2289 }
2290 timeout(timeLimit, opt$) {
2291 let onTimeout = opt$.onTimeout === void 0 ? null : opt$.onTimeout;
2292 if (this[_isComplete])
2293 return new _Future.immediate(this);
2294 let result = new _Future();
2295 let timer = null;
2296 if (onTimeout === null) {
2297 timer = new Timer(timeLimit, (() => {
2298 result._completeError(new TimeoutException("Future not completed", t imeLimit));
2299 }).bind(this));
2300 } else {
2301 let zone = Zone.current;
2302 onTimeout = zone.registerCallback(onTimeout);
2303 timer = new Timer(timeLimit, (() => {
2304 try {
2305 result._complete(zone.run(onTimeout));
2306 } catch (e) {
2307 let s = dart.stackTrace(e);
2308 result._completeError(e, s);
2309 }
2310
2311 }).bind(this));
2312 }
2313 this.then(((v) => {
2314 if (timer.isActive) {
2315 timer.cancel();
2316 result._completeWithValue(v);
2317 }
2318 }).bind(this), {onError: ((e, s) => {
2319 if (timer.isActive) {
2320 timer.cancel();
2321 result._completeError(e, dart.as(s, core.StackTrace));
2322 }
2323 }).bind(this)});
2324 return result;
2325 }
2326 }
2327 dart.defineNamedConstructor(_Future, 'immediate');
2328 dart.defineNamedConstructor(_Future, 'immediateError');
2329 _Future._INCOMPLETE = 0;
2330 _Future._PENDING_COMPLETE = 1;
2331 _Future._CHAINED = 2;
2332 _Future._VALUE = 4;
2333 _Future._ERROR = 8;
2334 return _Future;
2335 });
2336 let _Future = _Future$(dart.dynamic);
2337 class _AsyncCallbackEntry extends core.Object {
2338 _AsyncCallbackEntry(callback) {
2339 this.callback = callback;
2340 this.next = null;
2341 }
2342 }
2343 exports._nextCallback = null;
2344 exports._lastCallback = null;
2345 exports._lastPriorityCallback = null;
2346 exports._isInCallbackLoop = false;
2347 // Function _asyncRunCallbackLoop: () → void
2348 function _asyncRunCallbackLoop() {
2349 while (exports._nextCallback !== null) {
2350 exports._lastPriorityCallback = null;
2351 let entry = exports._nextCallback;
2352 exports._nextCallback = entry.next;
2353 if (exports._nextCallback === null)
2354 exports._lastCallback = null;
2355 entry.callback();
2356 }
2357 }
2358 // Function _asyncRunCallback: () → void
2359 function _asyncRunCallback() {
2360 exports._isInCallbackLoop = true;
2361 try {
2362 _asyncRunCallbackLoop();
2363 } finally {
2364 exports._lastPriorityCallback = null;
2365 exports._isInCallbackLoop = false;
2366 if (exports._nextCallback !== null)
2367 _AsyncRun._scheduleImmediate(_asyncRunCallback);
2368 }
2369 }
2370 // Function _scheduleAsyncCallback: (dynamic) → void
2371 function _scheduleAsyncCallback(callback) {
2372 if (exports._nextCallback === null) {
2373 exports._nextCallback = exports._lastCallback = new _AsyncCallbackEntry(da rt.as(callback, _AsyncCallback));
2374 if (!dart.notNull(exports._isInCallbackLoop)) {
2375 _AsyncRun._scheduleImmediate(_asyncRunCallback);
2376 }
2377 } else {
2378 let newEntry = new _AsyncCallbackEntry(dart.as(callback, _AsyncCallback));
2379 exports._lastCallback.next = newEntry;
2380 exports._lastCallback = newEntry;
2381 }
2382 }
2383 // Function _schedulePriorityAsyncCallback: (dynamic) → void
2384 function _schedulePriorityAsyncCallback(callback) {
2385 let entry = new _AsyncCallbackEntry(dart.as(callback, _AsyncCallback));
2386 if (exports._nextCallback === null) {
2387 _scheduleAsyncCallback(callback);
2388 exports._lastPriorityCallback = exports._lastCallback;
2389 } else if (exports._lastPriorityCallback === null) {
2390 entry.next = exports._nextCallback;
2391 exports._nextCallback = exports._lastPriorityCallback = entry;
2392 } else {
2393 entry.next = exports._lastPriorityCallback.next;
2394 exports._lastPriorityCallback.next = entry;
2395 exports._lastPriorityCallback = entry;
2396 if (entry.next === null) {
2397 exports._lastCallback = entry;
2398 }
2399 }
2400 }
2401 // Function scheduleMicrotask: (() → void) → void
2402 function scheduleMicrotask(callback) {
2403 if (core.identical(_ROOT_ZONE, Zone.current)) {
2404 _rootScheduleMicrotask(null, null, _ROOT_ZONE, callback);
2405 return;
2406 }
2407 Zone.current.scheduleMicrotask(Zone.current.bindCallback(callback, {runGuard ed: true}));
2408 }
2409 let _scheduleImmediate = Symbol('_scheduleImmediate');
2410 let _initializeScheduleImmediate = Symbol('_initializeScheduleImmediate');
2411 let _scheduleImmediateJsOverride = Symbol('_scheduleImmediateJsOverride');
2412 let _scheduleImmediateWithSetImmediate = Symbol('_scheduleImmediateWithSetImme diate');
2413 let _scheduleImmediateWithTimer = Symbol('_scheduleImmediateWithTimer');
2414 class _AsyncRun extends core.Object {
2415 static [_scheduleImmediate](callback) {
2416 dart.dinvokef(scheduleImmediateClosure, callback);
2417 }
2418 static [_initializeScheduleImmediate]() {
2419 _js_helper.requiresPreamble();
2420 if (self.scheduleImmediate !== null) {
2421 return _scheduleImmediateJsOverride;
2422 }
2423 if (dart.notNull(self.MutationObserver !== null) && dart.notNull(self.docu ment !== null)) {
2424 let div = self.document.createElement("div");
2425 let span = self.document.createElement("span");
2426 let storedCallback = null;
2427 // Function internalCallback: (dynamic) → dynamic
2428 function internalCallback(_) {
2429 _isolate_helper.leaveJsAsync();
2430 let f = storedCallback;
2431 storedCallback = null;
2432 dart.dinvokef(f);
2433 }
2434 ;
2435 let observer = new self.MutationObserver(_js_helper.convertDartClosureTo JS(internalCallback, 1));
2436 observer.observe(div, {childList: true});
2437 return (callback) => {
2438 dart.assert(storedCallback === null);
2439 _isolate_helper.enterJsAsync();
2440 storedCallback = callback;
2441 div.firstChild ? div.removeChild(span) : div.appendChild(span);
2442 };
2443 } else if (self.setImmediate !== null) {
2444 return _scheduleImmediateWithSetImmediate;
2445 }
2446 return _scheduleImmediateWithTimer;
2447 }
2448 static [_scheduleImmediateJsOverride](callback) {
2449 // Function internalCallback: () → dynamic
2450 function internalCallback() {
2451 _isolate_helper.leaveJsAsync();
2452 callback();
2453 }
2454 ;
2455 _isolate_helper.enterJsAsync();
2456 self.scheduleImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0));
2457 }
2458 static [_scheduleImmediateWithSetImmediate](callback) {
2459 // Function internalCallback: () → dynamic
2460 function internalCallback() {
2461 _isolate_helper.leaveJsAsync();
2462 callback();
2463 }
2464 ;
2465 _isolate_helper.enterJsAsync();
2466 self.setImmediate(_js_helper.convertDartClosureToJS(internalCallback, 0));
2467 }
2468 static [_scheduleImmediateWithTimer](callback) {
2469 Timer._createTimer(core.Duration.ZERO, callback);
2470 }
2471 }
2472 dart.defineLazyProperties(_AsyncRun, {
2473 get scheduleImmediateClosure() {
2474 return _initializeScheduleImmediate();
2475 }
2476 });
2477 let StreamSubscription$ = dart.generic(function(T) {
2478 class StreamSubscription extends core.Object {
2479 }
2480 return StreamSubscription;
2481 });
2482 let StreamSubscription = StreamSubscription$(dart.dynamic);
2483 let EventSink$ = dart.generic(function(T) {
2484 class EventSink extends core.Object {
2485 }
2486 return EventSink;
2487 });
2488 let EventSink = EventSink$(dart.dynamic);
2489 let _stream = Symbol('_stream');
2490 let StreamView$ = dart.generic(function(T) {
2491 class StreamView extends Stream$(T) {
2492 StreamView($_stream) {
2493 this[_stream] = $_stream;
2494 super.Stream();
2495 }
2496 get isBroadcast() {
2497 return this[_stream].isBroadcast;
2498 }
2499 asBroadcastStream(opt$) {
2500 let onListen = opt$.onListen === void 0 ? null : opt$.onListen;
2501 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel;
2502 return this[_stream].asBroadcastStream({onListen: onListen, onCancel: on Cancel});
2503 }
2504 listen(onData, opt$) {
2505 let onError = opt$.onError === void 0 ? null : opt$.onError;
2506 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
2507 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
2508 return this[_stream].listen(onData, {onError: onError, onDone: onDone, c ancelOnError: cancelOnError});
2509 }
2510 }
2511 return StreamView;
2512 });
2513 let StreamView = StreamView$(dart.dynamic);
2514 let StreamConsumer$ = dart.generic(function(S) {
2515 class StreamConsumer extends core.Object {
2516 }
2517 return StreamConsumer;
2518 });
2519 let StreamConsumer = StreamConsumer$(dart.dynamic);
2520 let StreamSink$ = dart.generic(function(S) {
2521 class StreamSink extends core.Object {
2522 }
2523 return StreamSink;
2524 });
2525 let StreamSink = StreamSink$(dart.dynamic);
2526 let StreamTransformer$ = dart.generic(function(S, T) {
2527 class StreamTransformer extends core.Object {
2528 StreamTransformer(transformer) {
2529 return new _StreamSubscriptionTransformer(transformer);
2530 }
2531 StreamTransformer$fromHandlers(opt$) {
2532 return new _StreamHandlerTransformer(opt$);
2533 }
2534 }
2535 dart.defineNamedConstructor(StreamTransformer, 'fromHandlers');
2536 return StreamTransformer;
2537 });
2538 let StreamTransformer = StreamTransformer$(dart.dynamic, dart.dynamic);
2539 let StreamIterator$ = dart.generic(function(T) {
2540 class StreamIterator extends core.Object {
2541 StreamIterator(stream) {
2542 return new _StreamIteratorImpl(stream);
2543 }
2544 }
2545 return StreamIterator;
2546 });
2547 let StreamIterator = StreamIterator$(dart.dynamic);
2548 let _ControllerEventSinkWrapper$ = dart.generic(function(T) {
2549 class _ControllerEventSinkWrapper extends core.Object {
2550 _ControllerEventSinkWrapper($_sink) {
2551 this[_sink] = $_sink;
2552 }
2553 add(data) {
2554 this[_sink].add(data);
2555 }
2556 addError(error, stackTrace) {
2557 if (stackTrace === void 0)
2558 stackTrace = null;
2559 this[_sink].addError(error, stackTrace);
2560 }
2561 close() {
2562 this[_sink].close();
2563 }
2564 }
2565 return _ControllerEventSinkWrapper;
2566 });
2567 let _ControllerEventSinkWrapper = _ControllerEventSinkWrapper$(dart.dynamic);
2568 let StreamController$ = dart.generic(function(T) {
2569 class StreamController extends core.Object {
2570 StreamController(opt$) {
2571 let onListen = opt$.onListen === void 0 ? null : opt$.onListen;
2572 let onPause = opt$.onPause === void 0 ? null : opt$.onPause;
2573 let onResume = opt$.onResume === void 0 ? null : opt$.onResume;
2574 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel;
2575 let sync = opt$.sync === void 0 ? false : opt$.sync;
2576 if (dart.notNull(onListen === null) && dart.notNull(onPause === null) && dart.notNull(onResume === null) && dart.notNull(onCancel === null)) {
2577 return dart.as(sync ? new _NoCallbackSyncStreamController() : new _NoC allbackAsyncStreamController(), StreamController$(T));
2578 }
2579 return sync ? new _SyncStreamController(onListen, onPause, onResume, onC ancel) : new _AsyncStreamController(onListen, onPause, onResume, onCancel);
2580 }
2581 StreamController$broadcast(opt$) {
2582 let onListen = opt$.onListen === void 0 ? null : opt$.onListen;
2583 let onCancel = opt$.onCancel === void 0 ? null : opt$.onCancel;
2584 let sync = opt$.sync === void 0 ? false : opt$.sync;
2585 return sync ? new _SyncBroadcastStreamController(onListen, onCancel) : n ew _AsyncBroadcastStreamController(onListen, onCancel);
2586 }
2587 }
2588 dart.defineNamedConstructor(StreamController, 'broadcast');
2589 return StreamController;
2590 });
2591 let StreamController = StreamController$(dart.dynamic);
2592 let _StreamControllerLifecycle$ = dart.generic(function(T) {
2593 class _StreamControllerLifecycle extends core.Object {
2594 [_recordPause](subscription) {}
2595 [_recordResume](subscription) {}
2596 [_recordCancel](subscription) {
2597 return null;
2598 }
2599 }
2600 return _StreamControllerLifecycle;
2601 });
2602 let _StreamControllerLifecycle = _StreamControllerLifecycle$(dart.dynamic);
2603 let _varData = Symbol('_varData');
2604 let _isInitialState = Symbol('_isInitialState');
2605 let _subscription = Symbol('_subscription');
2606 let _pendingEvents = Symbol('_pendingEvents');
2607 let _ensurePendingEvents = Symbol('_ensurePendingEvents');
2608 let _badEventState = Symbol('_badEventState');
2609 let _nullFuture = Symbol('_nullFuture');
2610 let _closeUnchecked = Symbol('_closeUnchecked');
2611 let _StreamController$ = dart.generic(function(T) {
2612 class _StreamController extends core.Object {
2613 _StreamController() {
2614 this[_varData] = null;
2615 this[_state] = _StreamController._STATE_INITIAL;
2616 this[_doneFuture] = null;
2617 }
2618 get stream() {
2619 return dart.as(new _ControllerStream(this), Stream$(T));
2620 }
2621 get sink() {
2622 return new _StreamSinkWrapper(this);
2623 }
2624 get [_isCanceled]() {
2625 return (dart.notNull(this[_state]) & dart.notNull(_StreamController._STA TE_CANCELED)) !== 0;
2626 }
2627 get hasListener() {
2628 return (dart.notNull(this[_state]) & dart.notNull(_StreamController._STA TE_SUBSCRIBED)) !== 0;
2629 }
2630 get [_isInitialState]() {
2631 return (dart.notNull(this[_state]) & dart.notNull(_StreamController._STA TE_SUBSCRIPTION_MASK)) === _StreamController._STATE_INITIAL;
2632 }
2633 get isClosed() {
2634 return (dart.notNull(this[_state]) & dart.notNull(_StreamController._STA TE_CLOSED)) !== 0;
2635 }
2636 get isPaused() {
2637 return this.hasListener ? this[_subscription][_isInputPaused] : !dart.no tNull(this[_isCanceled]);
2638 }
2639 get [_isAddingStream]() {
2640 return (dart.notNull(this[_state]) & dart.notNull(_StreamController._STA TE_ADDSTREAM)) !== 0;
2641 }
2642 get [_mayAddEvent]() {
2643 return dart.notNull(this[_state]) < dart.notNull(_StreamController._STAT E_CLOSED);
2644 }
2645 get [_pendingEvents]() {
2646 dart.assert(this[_isInitialState]);
2647 if (!dart.notNull(this[_isAddingStream])) {
2648 return dart.as(this[_varData], _PendingEvents);
2649 }
2650 let state = dart.as(this[_varData], _StreamControllerAddStreamState);
2651 return dart.as(state.varData, _PendingEvents);
2652 }
2653 [_ensurePendingEvents]() {
2654 dart.assert(this[_isInitialState]);
2655 if (!dart.notNull(this[_isAddingStream])) {
2656 if (this[_varData] === null)
2657 this[_varData] = new _StreamImplEvents();
2658 return dart.as(this[_varData], _StreamImplEvents);
2659 }
2660 let state = dart.as(this[_varData], _StreamControllerAddStreamState);
2661 if (state.varData === null)
2662 state.varData = new _StreamImplEvents();
2663 return dart.as(state.varData, _StreamImplEvents);
2664 }
2665 get [_subscription]() {
2666 dart.assert(this.hasListener);
2667 if (this[_isAddingStream]) {
2668 let addState = dart.as(this[_varData], _StreamControllerAddStreamState );
2669 return dart.as(addState.varData, _ControllerSubscription);
2670 }
2671 return dart.as(this[_varData], _ControllerSubscription);
2672 }
2673 [_badEventState]() {
2674 if (this.isClosed) {
2675 return new core.StateError("Cannot add event after closing");
2676 }
2677 dart.assert(this[_isAddingStream]);
2678 return new core.StateError("Cannot add event while adding a stream");
2679 }
2680 addStream(source, opt$) {
2681 let cancelOnError = opt$.cancelOnError === void 0 ? true : opt$.cancelOn Error;
2682 if (!dart.notNull(this[_mayAddEvent]))
2683 throw this[_badEventState]();
2684 if (this[_isCanceled])
2685 return new _Future.immediate(null);
2686 let addState = new _StreamControllerAddStreamState(this, this[_varData], source, cancelOnError);
2687 this[_varData] = addState;
2688 this[_state] = _StreamController._STATE_ADDSTREAM;
2689 return addState.addStreamFuture;
2690 }
2691 get done() {
2692 return this[_ensureDoneFuture]();
2693 }
2694 [_ensureDoneFuture]() {
2695 if (this[_doneFuture] === null) {
2696 this[_doneFuture] = this[_isCanceled] ? Future[_nullFuture] : new _Fut ure();
2697 }
2698 return this[_doneFuture];
2699 }
2700 add(value) {
2701 if (!dart.notNull(this[_mayAddEvent]))
2702 throw this[_badEventState]();
2703 this[_add](value);
2704 }
2705 addError(error, stackTrace) {
2706 if (stackTrace === void 0)
2707 stackTrace = null;
2708 error = _nonNullError(error);
2709 if (!dart.notNull(this[_mayAddEvent]))
2710 throw this[_badEventState]();
2711 let replacement = Zone.current.errorCallback(error, stackTrace);
2712 if (replacement !== null) {
2713 error = _nonNullError(replacement.error);
2714 stackTrace = replacement.stackTrace;
2715 }
2716 this[_addError](error, stackTrace);
2717 }
2718 close() {
2719 if (this.isClosed) {
2720 return this[_ensureDoneFuture]();
2721 }
2722 if (!dart.notNull(this[_mayAddEvent]))
2723 throw this[_badEventState]();
2724 this[_closeUnchecked]();
2725 return this[_ensureDoneFuture]();
2726 }
2727 [_closeUnchecked]() {
2728 this[_state] = _StreamController._STATE_CLOSED;
2729 if (this.hasListener) {
2730 this[_sendDone]();
2731 } else if (this[_isInitialState]) {
2732 this[_ensurePendingEvents]().add(new _DelayedDone());
2733 }
2734 }
2735 [_add](value) {
2736 if (this.hasListener) {
2737 this[_sendData](value);
2738 } else if (this[_isInitialState]) {
2739 this[_ensurePendingEvents]().add(new _DelayedData(value));
2740 }
2741 }
2742 [_addError](error, stackTrace) {
2743 if (this.hasListener) {
2744 this[_sendError](error, stackTrace);
2745 } else if (this[_isInitialState]) {
2746 this[_ensurePendingEvents]().add(new _DelayedError(error, stackTrace)) ;
2747 }
2748 }
2749 [_close]() {
2750 dart.assert(this[_isAddingStream]);
2751 let addState = dart.as(this[_varData], _StreamControllerAddStreamState);
2752 this[_varData] = addState.varData;
2753 this[_state] = ~dart.notNull(_StreamController._STATE_ADDSTREAM);
2754 addState.complete();
2755 }
2756 [_subscribe](onData, onError, onDone, cancelOnError) {
2757 if (!dart.notNull(this[_isInitialState])) {
2758 throw new core.StateError("Stream has already been listened to.");
2759 }
2760 let subscription = new _ControllerSubscription(this, onData, onError, on Done, cancelOnError);
2761 let pendingEvents = this[_pendingEvents];
2762 this[_state] = _StreamController._STATE_SUBSCRIBED;
2763 if (this[_isAddingStream]) {
2764 let addState = dart.as(this[_varData], _StreamControllerAddStreamState );
2765 addState.varData = subscription;
2766 addState.resume();
2767 } else {
2768 this[_varData] = subscription;
2769 }
2770 subscription._setPendingEvents(pendingEvents);
2771 subscription._guardCallback((() => {
2772 _runGuarded(this[_onListen]);
2773 }).bind(this));
2774 return dart.as(subscription, StreamSubscription$(T));
2775 }
2776 [_recordCancel](subscription) {
2777 let result = null;
2778 if (this[_isAddingStream]) {
2779 let addState = dart.as(this[_varData], _StreamControllerAddStreamState );
2780 result = addState.cancel();
2781 }
2782 this[_varData] = null;
2783 this[_state] = dart.notNull(this[_state]) & ~(dart.notNull(_StreamContro ller._STATE_SUBSCRIBED) | dart.notNull(_StreamController._STATE_ADDSTREAM)) | da rt.notNull(_StreamController._STATE_CANCELED);
2784 if (this[_onCancel] !== null) {
2785 if (result === null) {
2786 try {
2787 result = dart.as(this[_onCancel](), Future);
2788 } catch (e) {
2789 let s = dart.stackTrace(e);
2790 result = ((_) => {
2791 _._asyncCompleteError(e, s);
2792 return _;
2793 }).bind(this)(new _Future());
2794 }
2795
2796 } else {
2797 result = result.whenComplete(this[_onCancel]);
2798 }
2799 }
2800 // Function complete: () → void
2801 function complete() {
2802 if (dart.notNull(this[_doneFuture] !== null) && dart.notNull(this[_don eFuture][_mayComplete])) {
2803 this[_doneFuture]._asyncComplete(null);
2804 }
2805 }
2806 if (result !== null) {
2807 result = result.whenComplete(complete);
2808 } else {
2809 complete();
2810 }
2811 return result;
2812 }
2813 [_recordPause](subscription) {
2814 if (this[_isAddingStream]) {
2815 let addState = dart.as(this[_varData], _StreamControllerAddStreamState );
2816 addState.pause();
2817 }
2818 _runGuarded(this[_onPause]);
2819 }
2820 [_recordResume](subscription) {
2821 if (this[_isAddingStream]) {
2822 let addState = dart.as(this[_varData], _StreamControllerAddStreamState );
2823 addState.resume();
2824 }
2825 _runGuarded(this[_onResume]);
2826 }
2827 }
2828 _StreamController._STATE_INITIAL = 0;
2829 _StreamController._STATE_SUBSCRIBED = 1;
2830 _StreamController._STATE_CANCELED = 2;
2831 _StreamController._STATE_SUBSCRIPTION_MASK = 3;
2832 _StreamController._STATE_CLOSED = 4;
2833 _StreamController._STATE_ADDSTREAM = 8;
2834 return _StreamController;
2835 });
2836 let _StreamController = _StreamController$(dart.dynamic);
2837 let _SyncStreamControllerDispatch$ = dart.generic(function(T) {
2838 class _SyncStreamControllerDispatch extends core.Object {
2839 [_sendData](data) {
2840 this[_subscription]._add(data);
2841 }
2842 [_sendError](error, stackTrace) {
2843 this[_subscription]._addError(error, stackTrace);
2844 }
2845 [_sendDone]() {
2846 this[_subscription]._close();
2847 }
2848 }
2849 return _SyncStreamControllerDispatch;
2850 });
2851 let _SyncStreamControllerDispatch = _SyncStreamControllerDispatch$(dart.dynami c);
2852 let _AsyncStreamControllerDispatch$ = dart.generic(function(T) {
2853 class _AsyncStreamControllerDispatch extends core.Object {
2854 [_sendData](data) {
2855 this[_subscription]._addPending(new _DelayedData(data));
2856 }
2857 [_sendError](error, stackTrace) {
2858 this[_subscription]._addPending(new _DelayedError(error, stackTrace));
2859 }
2860 [_sendDone]() {
2861 this[_subscription]._addPending(new _DelayedDone());
2862 }
2863 }
2864 return _AsyncStreamControllerDispatch;
2865 });
2866 let _AsyncStreamControllerDispatch = _AsyncStreamControllerDispatch$(dart.dyna mic);
2867 let _AsyncStreamController$ = dart.generic(function(T) {
2868 class _AsyncStreamController extends dart.mixin(_StreamController$(T), _Asyn cStreamControllerDispatch$(T)) {
2869 _AsyncStreamController($_onListen, $_onPause, $_onResume, $_onCancel) {
2870 this[_onListen] = $_onListen;
2871 this[_onPause] = $_onPause;
2872 this[_onResume] = $_onResume;
2873 this[_onCancel] = $_onCancel;
2874 super._StreamController();
2875 }
2876 }
2877 return _AsyncStreamController;
2878 });
2879 let _AsyncStreamController = _AsyncStreamController$(dart.dynamic);
2880 let _SyncStreamController$ = dart.generic(function(T) {
2881 class _SyncStreamController extends dart.mixin(_StreamController$(T), _SyncS treamControllerDispatch$(T)) {
2882 _SyncStreamController($_onListen, $_onPause, $_onResume, $_onCancel) {
2883 this[_onListen] = $_onListen;
2884 this[_onPause] = $_onPause;
2885 this[_onResume] = $_onResume;
2886 this[_onCancel] = $_onCancel;
2887 super._StreamController();
2888 }
2889 }
2890 return _SyncStreamController;
2891 });
2892 let _SyncStreamController = _SyncStreamController$(dart.dynamic);
2893 class _NoCallbacks extends core.Object {
2894 get [_onListen]() {
2895 return null;
2896 }
2897 get [_onPause]() {
2898 return null;
2899 }
2900 get [_onResume]() {
2901 return null;
2902 }
2903 get [_onCancel]() {
2904 return null;
2905 }
2906 }
2907 class _NoCallbackAsyncStreamController extends dart.mixin(_AsyncStreamControll erDispatch, _NoCallbacks) {
2908 }
2909 class _NoCallbackSyncStreamController extends dart.mixin(_SyncStreamController Dispatch, _NoCallbacks) {
2910 }
2911 // Function _runGuarded: (() → dynamic) → Future<dynamic>
2912 function _runGuarded(notificationHandler) {
2913 if (notificationHandler === null)
2914 return null;
2915 try {
2916 let result = notificationHandler();
2917 if (dart.is(result, Future))
2918 return dart.as(result, Future);
2919 return null;
2920 } catch (e) {
2921 let s = dart.stackTrace(e);
2922 Zone.current.handleUncaughtError(e, s);
2923 }
2924
2925 }
2926 let _target = Symbol('_target');
2927 let _StreamSinkWrapper$ = dart.generic(function(T) {
2928 class _StreamSinkWrapper extends core.Object {
2929 _StreamSinkWrapper($_target) {
2930 this[_target] = $_target;
2931 }
2932 add(data) {
2933 this[_target].add(data);
2934 }
2935 addError(error, stackTrace) {
2936 if (stackTrace === void 0)
2937 stackTrace = null;
2938 this[_target].addError(error, stackTrace);
2939 }
2940 close() {
2941 return this[_target].close();
2942 }
2943 addStream(source, opt$) {
2944 let cancelOnError = opt$.cancelOnError === void 0 ? true : opt$.cancelOn Error;
2945 return this[_target].addStream(source, {cancelOnError: cancelOnError});
2946 }
2947 get done() {
2948 return this[_target].done;
2949 }
2950 }
2951 return _StreamSinkWrapper;
2952 });
2953 let _StreamSinkWrapper = _StreamSinkWrapper$(dart.dynamic);
2954 let _AddStreamState$ = dart.generic(function(T) {
2955 class _AddStreamState extends core.Object {
2956 _AddStreamState(controller, source, cancelOnError) {
2957 this.addStreamFuture = new _Future();
2958 this.addSubscription = source.listen(controller[_add], {onError: dart.as (cancelOnError ? makeErrorHandler(controller) : controller[_addError], core.Func tion), onDone: controller[_close], cancelOnError: cancelOnError});
2959 }
2960 static makeErrorHandler(controller) {
2961 return ((e, s) => {
2962 controller._addError(e, s);
2963 controller._close();
2964 }).bind(this);
2965 }
2966 pause() {
2967 this.addSubscription.pause();
2968 }
2969 resume() {
2970 this.addSubscription.resume();
2971 }
2972 cancel() {
2973 let cancel = this.addSubscription.cancel();
2974 if (cancel === null) {
2975 this.addStreamFuture._asyncComplete(null);
2976 return null;
2977 }
2978 return cancel.whenComplete((() => {
2979 this.addStreamFuture._asyncComplete(null);
2980 }).bind(this));
2981 }
2982 complete() {
2983 this.addStreamFuture._asyncComplete(null);
2984 }
2985 }
2986 return _AddStreamState;
2987 });
2988 let _AddStreamState = _AddStreamState$(dart.dynamic);
2989 let _StreamControllerAddStreamState$ = dart.generic(function(T) {
2990 class _StreamControllerAddStreamState extends _AddStreamState$(T) {
2991 _StreamControllerAddStreamState(controller, varData, source, cancelOnError ) {
2992 this.varData = varData;
2993 super._AddStreamState(dart.as(controller, _EventSink$(T)), source, cance lOnError);
2994 if (controller.isPaused) {
2995 this.addSubscription.pause();
2996 }
2997 }
2998 }
2999 return _StreamControllerAddStreamState;
3000 });
3001 let _StreamControllerAddStreamState = _StreamControllerAddStreamState$(dart.dy namic);
3002 let _EventSink$ = dart.generic(function(T) {
3003 class _EventSink extends core.Object {
3004 }
3005 return _EventSink;
3006 });
3007 let _EventSink = _EventSink$(dart.dynamic);
3008 let _EventDispatch$ = dart.generic(function(T) {
3009 class _EventDispatch extends core.Object {
3010 }
3011 return _EventDispatch;
3012 });
3013 let _EventDispatch = _EventDispatch$(dart.dynamic);
3014 let _isUsed = Symbol('_isUsed');
3015 let _GeneratedStreamImpl$ = dart.generic(function(T) {
3016 class _GeneratedStreamImpl extends _StreamImpl$(T) {
3017 _GeneratedStreamImpl($_pending) {
3018 this[_pending] = $_pending;
3019 this[_isUsed] = false;
3020 super._StreamImpl();
3021 }
3022 [_createSubscription](onData, onError, onDone, cancelOnError) {
3023 if (this[_isUsed])
3024 throw new core.StateError("Stream has already been listened to.");
3025 this[_isUsed] = true;
3026 return ((_) => {
3027 _._setPendingEvents(this[_pending]());
3028 return _;
3029 }).bind(this)(new _BufferingStreamSubscription(onData, onError, onDone, cancelOnError));
3030 }
3031 }
3032 return _GeneratedStreamImpl;
3033 });
3034 let _GeneratedStreamImpl = _GeneratedStreamImpl$(dart.dynamic);
3035 let _iterator = Symbol('_iterator');
3036 let _eventScheduled = Symbol('_eventScheduled');
3037 class _PendingEvents extends core.Object {
3038 _PendingEvents() {
3039 this[_state] = _PendingEvents._STATE_UNSCHEDULED;
3040 }
3041 get isScheduled() {
3042 return this[_state] === _PendingEvents._STATE_SCHEDULED;
3043 }
3044 get [_eventScheduled]() {
3045 return dart.notNull(this[_state]) >= dart.notNull(_PendingEvents._STATE_SC HEDULED);
3046 }
3047 schedule(dispatch) {
3048 if (this.isScheduled)
3049 return;
3050 dart.assert(!dart.notNull(this.isEmpty));
3051 if (this[_eventScheduled]) {
3052 dart.assert(this[_state] === _PendingEvents._STATE_CANCELED);
3053 this[_state] = _PendingEvents._STATE_SCHEDULED;
3054 return;
3055 }
3056 scheduleMicrotask((() => {
3057 let oldState = this[_state];
3058 this[_state] = _PendingEvents._STATE_UNSCHEDULED;
3059 if (oldState === _PendingEvents._STATE_CANCELED)
3060 return;
3061 this.handleNext(dispatch);
3062 }).bind(this));
3063 this[_state] = _PendingEvents._STATE_SCHEDULED;
3064 }
3065 cancelSchedule() {
3066 if (this.isScheduled)
3067 this[_state] = _PendingEvents._STATE_CANCELED;
3068 }
3069 }
3070 _PendingEvents._STATE_UNSCHEDULED = 0;
3071 _PendingEvents._STATE_SCHEDULED = 1;
3072 _PendingEvents._STATE_CANCELED = 3;
3073 let _IterablePendingEvents$ = dart.generic(function(T) {
3074 class _IterablePendingEvents extends _PendingEvents {
3075 _IterablePendingEvents(data) {
3076 this[_iterator] = data.iterator;
3077 super._PendingEvents();
3078 }
3079 get isEmpty() {
3080 return this[_iterator] === null;
3081 }
3082 handleNext(dispatch) {
3083 if (this[_iterator] === null) {
3084 throw new core.StateError("No events pending.");
3085 }
3086 let isDone = null;
3087 try {
3088 isDone = !dart.notNull(this[_iterator].moveNext());
3089 } catch (e) {
3090 let s = dart.stackTrace(e);
3091 this[_iterator] = null;
3092 dispatch._sendError(e, s);
3093 return;
3094 }
3095
3096 if (!dart.notNull(isDone)) {
3097 dispatch._sendData(this[_iterator].current);
3098 } else {
3099 this[_iterator] = null;
3100 dispatch._sendDone();
3101 }
3102 }
3103 clear() {
3104 if (this.isScheduled)
3105 this.cancelSchedule();
3106 this[_iterator] = null;
3107 }
3108 }
3109 return _IterablePendingEvents;
3110 });
3111 let _IterablePendingEvents = _IterablePendingEvents$(dart.dynamic);
3112 // Function _nullDataHandler: (dynamic) → void
3113 function _nullDataHandler(value) {
3114 }
3115 // Function _nullErrorHandler: (dynamic, [StackTrace]) → void
3116 function _nullErrorHandler(error, stackTrace) {
3117 if (stackTrace === void 0)
3118 stackTrace = null;
3119 Zone.current.handleUncaughtError(error, stackTrace);
3120 }
3121 // Function _nullDoneHandler: () → void
3122 function _nullDoneHandler() {
3123 }
3124 class _DelayedEvent extends core.Object {
3125 _DelayedEvent() {
3126 this.next = null;
3127 }
3128 }
3129 let _DelayedData$ = dart.generic(function(T) {
3130 class _DelayedData extends _DelayedEvent {
3131 _DelayedData(value) {
3132 this.value = value;
3133 super._DelayedEvent();
3134 }
3135 perform(dispatch) {
3136 dispatch._sendData(this.value);
3137 }
3138 }
3139 return _DelayedData;
3140 });
3141 let _DelayedData = _DelayedData$(dart.dynamic);
3142 class _DelayedError extends _DelayedEvent {
3143 _DelayedError(error, stackTrace) {
3144 this.error = error;
3145 this.stackTrace = stackTrace;
3146 super._DelayedEvent();
3147 }
3148 perform(dispatch) {
3149 dispatch._sendError(this.error, this.stackTrace);
3150 }
3151 }
3152 class _DelayedDone extends core.Object {
3153 _DelayedDone() {
3154 }
3155 perform(dispatch) {
3156 dispatch._sendDone();
3157 }
3158 get next() {
3159 return null;
3160 }
3161 set next(_) {
3162 throw new core.StateError("No events after a done.");
3163 }
3164 }
3165 class _StreamImplEvents extends _PendingEvents {
3166 _StreamImplEvents() {
3167 this.firstPendingEvent = null;
3168 this.lastPendingEvent = null;
3169 super._PendingEvents();
3170 }
3171 get isEmpty() {
3172 return this.lastPendingEvent === null;
3173 }
3174 add(event) {
3175 if (this.lastPendingEvent === null) {
3176 this.firstPendingEvent = this.lastPendingEvent = event;
3177 } else {
3178 this.lastPendingEvent = this.lastPendingEvent.next = event;
3179 }
3180 }
3181 handleNext(dispatch) {
3182 dart.assert(!dart.notNull(this.isScheduled));
3183 let event = this.firstPendingEvent;
3184 this.firstPendingEvent = event.next;
3185 if (this.firstPendingEvent === null) {
3186 this.lastPendingEvent = null;
3187 }
3188 event.perform(dispatch);
3189 }
3190 clear() {
3191 if (this.isScheduled)
3192 this.cancelSchedule();
3193 this.firstPendingEvent = this.lastPendingEvent = null;
3194 }
3195 }
3196 let _unlink = Symbol('_unlink');
3197 let _insertBefore = Symbol('_insertBefore');
3198 class _BroadcastLinkedList extends core.Object {
3199 _BroadcastLinkedList() {
3200 this[_next] = null;
3201 this[_previous] = null;
3202 }
3203 [_unlink]() {
3204 this[_previous][_next] = this[_next];
3205 this[_next][_previous] = this[_previous];
3206 this[_next] = this[_previous] = this;
3207 }
3208 [_insertBefore](newNext) {
3209 let newPrevious = newNext[_previous];
3210 newPrevious[_next] = this;
3211 newNext[_previous] = this[_previous];
3212 this[_previous][_next] = newNext;
3213 this[_previous] = newPrevious;
3214 }
3215 }
3216 let _schedule = Symbol('_schedule');
3217 let _isSent = Symbol('_isSent');
3218 let _isScheduled = Symbol('_isScheduled');
3219 let _DoneStreamSubscription$ = dart.generic(function(T) {
3220 class _DoneStreamSubscription extends core.Object {
3221 _DoneStreamSubscription($_onDone) {
3222 this[_onDone] = $_onDone;
3223 this[_zone] = Zone.current;
3224 this[_state] = 0;
3225 this[_schedule]();
3226 }
3227 get [_isSent]() {
3228 return (dart.notNull(this[_state]) & dart.notNull(_DoneStreamSubscriptio n._DONE_SENT)) !== 0;
3229 }
3230 get [_isScheduled]() {
3231 return (dart.notNull(this[_state]) & dart.notNull(_DoneStreamSubscriptio n._SCHEDULED)) !== 0;
3232 }
3233 get isPaused() {
3234 return dart.notNull(this[_state]) >= dart.notNull(_DoneStreamSubscriptio n._PAUSED);
3235 }
3236 [_schedule]() {
3237 if (this[_isScheduled])
3238 return;
3239 this[_zone].scheduleMicrotask(this[_sendDone]);
3240 this[_state] = _DoneStreamSubscription._SCHEDULED;
3241 }
3242 onData(handleData) {}
3243 onError(handleError) {}
3244 onDone(handleDone) {
3245 this[_onDone] = handleDone;
3246 }
3247 pause(resumeSignal) {
3248 if (resumeSignal === void 0)
3249 resumeSignal = null;
3250 this[_state] = _DoneStreamSubscription._PAUSED;
3251 if (resumeSignal !== null)
3252 resumeSignal.whenComplete(this.resume);
3253 }
3254 resume() {
3255 if (this.isPaused) {
3256 this[_state] = _DoneStreamSubscription._PAUSED;
3257 if (!dart.notNull(this.isPaused) && !dart.notNull(this[_isSent])) {
3258 this[_schedule]();
3259 }
3260 }
3261 }
3262 cancel() {
3263 return null;
3264 }
3265 asFuture(futureValue) {
3266 if (futureValue === void 0)
3267 futureValue = null;
3268 let result = new _Future();
3269 this[_onDone] = (() => {
3270 result._completeWithValue(null);
3271 }).bind(this);
3272 return result;
3273 }
3274 [_sendDone]() {
3275 this[_state] = ~dart.notNull(_DoneStreamSubscription._SCHEDULED);
3276 if (this.isPaused)
3277 return;
3278 this[_state] = _DoneStreamSubscription._DONE_SENT;
3279 if (this[_onDone] !== null)
3280 this[_zone].runGuarded(this[_onDone]);
3281 }
3282 }
3283 _DoneStreamSubscription._DONE_SENT = 1;
3284 _DoneStreamSubscription._SCHEDULED = 2;
3285 _DoneStreamSubscription._PAUSED = 4;
3286 return _DoneStreamSubscription;
3287 });
3288 let _DoneStreamSubscription = _DoneStreamSubscription$(dart.dynamic);
3289 let _source = Symbol('_source');
3290 let _onListenHandler = Symbol('_onListenHandler');
3291 let _onCancelHandler = Symbol('_onCancelHandler');
3292 let _cancelSubscription = Symbol('_cancelSubscription');
3293 let _pauseSubscription = Symbol('_pauseSubscription');
3294 let _resumeSubscription = Symbol('_resumeSubscription');
3295 let _isSubscriptionPaused = Symbol('_isSubscriptionPaused');
3296 let _AsBroadcastStream$ = dart.generic(function(T) {
3297 class _AsBroadcastStream extends Stream$(T) {
3298 _AsBroadcastStream($_source, onListenHandler, onCancelHandler) {
3299 this[_source] = $_source;
3300 this[_onListenHandler] = dart.closureWrap(Zone.current.registerUnaryCall back(onListenHandler), "(StreamSubscription<dynamic>) → void");
3301 this[_onCancelHandler] = dart.closureWrap(Zone.current.registerUnaryCall back(onCancelHandler), "(StreamSubscription<dynamic>) → void");
3302 this[_zone] = Zone.current;
3303 this[_controller] = null;
3304 this[_subscription] = null;
3305 super.Stream();
3306 this[_controller] = new _AsBroadcastStreamController(this[_onListen], th is[_onCancel]);
3307 }
3308 get isBroadcast() {
3309 return true;
3310 }
3311 listen(onData, opt$) {
3312 let onError = opt$.onError === void 0 ? null : opt$.onError;
3313 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
3314 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
3315 if (dart.notNull(this[_controller] === null) || dart.notNull(this[_contr oller].isClosed)) {
3316 return new _DoneStreamSubscription(onDone);
3317 }
3318 if (this[_subscription] === null) {
3319 this[_subscription] = this[_source].listen(this[_controller].add, {onE rror: this[_controller].addError, onDone: this[_controller].close});
3320 }
3321 cancelOnError = core.identical(true, cancelOnError);
3322 return this[_controller]._subscribe(onData, onError, onDone, cancelOnErr or);
3323 }
3324 [_onCancel]() {
3325 let shutdown = dart.notNull(this[_controller] === null) || dart.notNull( this[_controller].isClosed);
3326 if (this[_onCancelHandler] !== null) {
3327 this[_zone].runUnary(this[_onCancelHandler], new _BroadcastSubscriptio nWrapper(this));
3328 }
3329 if (shutdown) {
3330 if (this[_subscription] !== null) {
3331 this[_subscription].cancel();
3332 this[_subscription] = null;
3333 }
3334 }
3335 }
3336 [_onListen]() {
3337 if (this[_onListenHandler] !== null) {
3338 this[_zone].runUnary(this[_onListenHandler], new _BroadcastSubscriptio nWrapper(this));
3339 }
3340 }
3341 [_cancelSubscription]() {
3342 if (this[_subscription] === null)
3343 return;
3344 let subscription = this[_subscription];
3345 this[_subscription] = null;
3346 this[_controller] = null;
3347 subscription.cancel();
3348 }
3349 [_pauseSubscription](resumeSignal) {
3350 if (this[_subscription] === null)
3351 return;
3352 this[_subscription].pause(resumeSignal);
3353 }
3354 [_resumeSubscription]() {
3355 if (this[_subscription] === null)
3356 return;
3357 this[_subscription].resume();
3358 }
3359 get [_isSubscriptionPaused]() {
3360 if (this[_subscription] === null)
3361 return false;
3362 return this[_subscription].isPaused;
3363 }
3364 }
3365 return _AsBroadcastStream;
3366 });
3367 let _AsBroadcastStream = _AsBroadcastStream$(dart.dynamic);
3368 let _BroadcastSubscriptionWrapper$ = dart.generic(function(T) {
3369 class _BroadcastSubscriptionWrapper extends core.Object {
3370 _BroadcastSubscriptionWrapper($_stream) {
3371 this[_stream] = $_stream;
3372 }
3373 onData(handleData) {
3374 throw new core.UnsupportedError("Cannot change handlers of asBroadcastSt ream source subscription.");
3375 }
3376 onError(handleError) {
3377 throw new core.UnsupportedError("Cannot change handlers of asBroadcastSt ream source subscription.");
3378 }
3379 onDone(handleDone) {
3380 throw new core.UnsupportedError("Cannot change handlers of asBroadcastSt ream source subscription.");
3381 }
3382 pause(resumeSignal) {
3383 if (resumeSignal === void 0)
3384 resumeSignal = null;
3385 this[_stream]._pauseSubscription(resumeSignal);
3386 }
3387 resume() {
3388 this[_stream]._resumeSubscription();
3389 }
3390 cancel() {
3391 this[_stream]._cancelSubscription();
3392 return null;
3393 }
3394 get isPaused() {
3395 return this[_stream][_isSubscriptionPaused];
3396 }
3397 asFuture(futureValue) {
3398 if (futureValue === void 0)
3399 futureValue = null;
3400 throw new core.UnsupportedError("Cannot change handlers of asBroadcastSt ream source subscription.");
3401 }
3402 }
3403 return _BroadcastSubscriptionWrapper;
3404 });
3405 let _BroadcastSubscriptionWrapper = _BroadcastSubscriptionWrapper$(dart.dynami c);
3406 let _current = Symbol('_current');
3407 let _futureOrPrefetch = Symbol('_futureOrPrefetch');
3408 let _clear = Symbol('_clear');
3409 let _StreamIteratorImpl$ = dart.generic(function(T) {
3410 class _StreamIteratorImpl extends core.Object {
3411 _StreamIteratorImpl(stream) {
3412 this[_subscription] = null;
3413 this[_current] = null;
3414 this[_futureOrPrefetch] = null;
3415 this[_state] = _StreamIteratorImpl._STATE_FOUND;
3416 this[_subscription] = stream.listen(this[_onData], {onError: this[_onErr or], onDone: this[_onDone], cancelOnError: true});
3417 }
3418 get current() {
3419 return this[_current];
3420 }
3421 moveNext() {
3422 if (this[_state] === _StreamIteratorImpl._STATE_DONE) {
3423 return new _Future.immediate(false);
3424 }
3425 if (this[_state] === _StreamIteratorImpl._STATE_MOVING) {
3426 throw new core.StateError("Already waiting for next.");
3427 }
3428 if (this[_state] === _StreamIteratorImpl._STATE_FOUND) {
3429 this[_state] = _StreamIteratorImpl._STATE_MOVING;
3430 this[_current] = null;
3431 this[_futureOrPrefetch] = new _Future();
3432 return dart.as(this[_futureOrPrefetch], Future$(core.bool));
3433 } else {
3434 dart.assert(dart.notNull(this[_state]) >= dart.notNull(_StreamIterator Impl._STATE_EXTRA_DATA));
3435 switch (this[_state]) {
3436 case _StreamIteratorImpl._STATE_EXTRA_DATA:
3437 this[_state] = _StreamIteratorImpl._STATE_FOUND;
3438 this[_current] = dart.as(this[_futureOrPrefetch], T);
3439 this[_futureOrPrefetch] = null;
3440 this[_subscription].resume();
3441 return new _Future.immediate(true);
3442 case _StreamIteratorImpl._STATE_EXTRA_ERROR:
3443 let prefetch = dart.as(this[_futureOrPrefetch], AsyncError);
3444 this[_clear]();
3445 return new _Future.immediateError(prefetch.error, prefetch.stackTr ace);
3446 case _StreamIteratorImpl._STATE_EXTRA_DONE:
3447 this[_clear]();
3448 return new _Future.immediate(false);
3449 }
3450 }
3451 }
3452 [_clear]() {
3453 this[_subscription] = null;
3454 this[_futureOrPrefetch] = null;
3455 this[_current] = null;
3456 this[_state] = _StreamIteratorImpl._STATE_DONE;
3457 }
3458 cancel() {
3459 let subscription = this[_subscription];
3460 if (this[_state] === _StreamIteratorImpl._STATE_MOVING) {
3461 let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool));
3462 this[_clear]();
3463 hasNext._complete(false);
3464 } else {
3465 this[_clear]();
3466 }
3467 return subscription.cancel();
3468 }
3469 [_onData](data) {
3470 if (this[_state] === _StreamIteratorImpl._STATE_MOVING) {
3471 this[_current] = data;
3472 let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool));
3473 this[_futureOrPrefetch] = null;
3474 this[_state] = _StreamIteratorImpl._STATE_FOUND;
3475 hasNext._complete(true);
3476 return;
3477 }
3478 this[_subscription].pause();
3479 dart.assert(this[_futureOrPrefetch] === null);
3480 this[_futureOrPrefetch] = data;
3481 this[_state] = _StreamIteratorImpl._STATE_EXTRA_DATA;
3482 }
3483 [_onError](error, stackTrace) {
3484 if (stackTrace === void 0)
3485 stackTrace = null;
3486 if (this[_state] === _StreamIteratorImpl._STATE_MOVING) {
3487 let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool));
3488 this[_clear]();
3489 hasNext._completeError(error, stackTrace);
3490 return;
3491 }
3492 this[_subscription].pause();
3493 dart.assert(this[_futureOrPrefetch] === null);
3494 this[_futureOrPrefetch] = new AsyncError(error, stackTrace);
3495 this[_state] = _StreamIteratorImpl._STATE_EXTRA_ERROR;
3496 }
3497 [_onDone]() {
3498 if (this[_state] === _StreamIteratorImpl._STATE_MOVING) {
3499 let hasNext = dart.as(this[_futureOrPrefetch], _Future$(core.bool));
3500 this[_clear]();
3501 hasNext._complete(false);
3502 return;
3503 }
3504 this[_subscription].pause();
3505 this[_futureOrPrefetch] = null;
3506 this[_state] = _StreamIteratorImpl._STATE_EXTRA_DONE;
3507 }
3508 }
3509 _StreamIteratorImpl._STATE_FOUND = 0;
3510 _StreamIteratorImpl._STATE_DONE = 1;
3511 _StreamIteratorImpl._STATE_MOVING = 2;
3512 _StreamIteratorImpl._STATE_EXTRA_DATA = 3;
3513 _StreamIteratorImpl._STATE_EXTRA_ERROR = 4;
3514 _StreamIteratorImpl._STATE_EXTRA_DONE = 5;
3515 return _StreamIteratorImpl;
3516 });
3517 let _StreamIteratorImpl = _StreamIteratorImpl$(dart.dynamic);
3518 // Function _runUserCode: (() → dynamic, (dynamic) → dynamic, (dynamic, StackT race) → dynamic) → dynamic
3519 function _runUserCode(userCode, onSuccess, onError) {
3520 try {
3521 dart.dinvokef(onSuccess, userCode());
3522 } catch (e) {
3523 let s = dart.stackTrace(e);
3524 let replacement = Zone.current.errorCallback(e, s);
3525 if (replacement === null) {
3526 dart.dinvokef(onError, e, s);
3527 } else {
3528 let error = _nonNullError(replacement.error);
3529 let stackTrace = replacement.stackTrace;
3530 dart.dinvokef(onError, error, stackTrace);
3531 }
3532 }
3533
3534 }
3535 // Function _cancelAndError: (StreamSubscription<dynamic>, _Future<dynamic>, d ynamic, StackTrace) → void
3536 function _cancelAndError(subscription, future, error, stackTrace) {
3537 let cancelFuture = subscription.cancel();
3538 if (dart.is(cancelFuture, Future)) {
3539 cancelFuture.whenComplete(() => future._completeError(error, stackTrace));
3540 } else {
3541 future._completeError(error, stackTrace);
3542 }
3543 }
3544 // Function _cancelAndErrorWithReplacement: (StreamSubscription<dynamic>, _Fut ure<dynamic>, dynamic, StackTrace) → void
3545 function _cancelAndErrorWithReplacement(subscription, future, error, stackTrac e) {
3546 let replacement = Zone.current.errorCallback(error, stackTrace);
3547 if (replacement !== null) {
3548 error = _nonNullError(replacement.error);
3549 stackTrace = replacement.stackTrace;
3550 }
3551 _cancelAndError(subscription, future, error, stackTrace);
3552 }
3553 // Function _cancelAndErrorClosure: (StreamSubscription<dynamic>, _Future<dyna mic>) → dynamic
3554 function _cancelAndErrorClosure(subscription, future) {
3555 return (error, stackTrace) => _cancelAndError(subscription, future, error, s tackTrace);
3556 }
3557 // Function _cancelAndValue: (StreamSubscription<dynamic>, _Future<dynamic>, d ynamic) → void
3558 function _cancelAndValue(subscription, future, value) {
3559 let cancelFuture = subscription.cancel();
3560 if (dart.is(cancelFuture, Future)) {
3561 cancelFuture.whenComplete(() => future._complete(value));
3562 } else {
3563 future._complete(value);
3564 }
3565 }
3566 let _handleData = Symbol('_handleData');
3567 let _handleError = Symbol('_handleError');
3568 let _handleDone = Symbol('_handleDone');
3569 let _ForwardingStream$ = dart.generic(function(S, T) {
3570 class _ForwardingStream extends Stream$(T) {
3571 _ForwardingStream($_source) {
3572 this[_source] = $_source;
3573 super.Stream();
3574 }
3575 get isBroadcast() {
3576 return this[_source].isBroadcast;
3577 }
3578 listen(onData, opt$) {
3579 let onError = opt$.onError === void 0 ? null : opt$.onError;
3580 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
3581 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
3582 cancelOnError = core.identical(true, cancelOnError);
3583 return this[_createSubscription](onData, onError, onDone, cancelOnError) ;
3584 }
3585 [_createSubscription](onData, onError, onDone, cancelOnError) {
3586 return new _ForwardingStreamSubscription(this, onData, onError, onDone, cancelOnError);
3587 }
3588 [_handleData](data, sink) {
3589 let outputData = data;
3590 sink._add(outputData);
3591 }
3592 [_handleError](error, stackTrace, sink) {
3593 sink._addError(error, stackTrace);
3594 }
3595 [_handleDone](sink) {
3596 sink._close();
3597 }
3598 }
3599 return _ForwardingStream;
3600 });
3601 let _ForwardingStream = _ForwardingStream$(dart.dynamic, dart.dynamic);
3602 let _ForwardingStreamSubscription$ = dart.generic(function(S, T) {
3603 class _ForwardingStreamSubscription extends _BufferingStreamSubscription$(T) {
3604 _ForwardingStreamSubscription($_stream, onData, onError, onDone, cancelOnE rror) {
3605 this[_stream] = $_stream;
3606 this[_subscription] = null;
3607 super._BufferingStreamSubscription(onData, onError, onDone, cancelOnErro r);
3608 this[_subscription] = this[_stream][_source].listen(this[_handleData], { onError: this[_handleError], onDone: this[_handleDone]});
3609 }
3610 [_add](data) {
3611 if (this[_isClosed])
3612 return;
3613 super._add(data);
3614 }
3615 [_addError](error, stackTrace) {
3616 if (this[_isClosed])
3617 return;
3618 super._addError(error, stackTrace);
3619 }
3620 [_onPause]() {
3621 if (this[_subscription] === null)
3622 return;
3623 this[_subscription].pause();
3624 }
3625 [_onResume]() {
3626 if (this[_subscription] === null)
3627 return;
3628 this[_subscription].resume();
3629 }
3630 [_onCancel]() {
3631 if (this[_subscription] !== null) {
3632 let subscription = this[_subscription];
3633 this[_subscription] = null;
3634 subscription.cancel();
3635 }
3636 return null;
3637 }
3638 [_handleData](data) {
3639 this[_stream]._handleData(data, this);
3640 }
3641 [_handleError](error, stackTrace) {
3642 this[_stream]._handleError(error, stackTrace, this);
3643 }
3644 [_handleDone]() {
3645 this[_stream]._handleDone(this);
3646 }
3647 }
3648 return _ForwardingStreamSubscription;
3649 });
3650 let _ForwardingStreamSubscription = _ForwardingStreamSubscription$(dart.dynami c, dart.dynamic);
3651 // Function _addErrorWithReplacement: (_EventSink<dynamic>, dynamic, dynamic) → void
3652 function _addErrorWithReplacement(sink, error, stackTrace) {
3653 let replacement = Zone.current.errorCallback(error, dart.as(stackTrace, core .StackTrace));
3654 if (replacement !== null) {
3655 error = _nonNullError(replacement.error);
3656 stackTrace = replacement.stackTrace;
3657 }
3658 sink._addError(error, dart.as(stackTrace, core.StackTrace));
3659 }
3660 let _test = Symbol('_test');
3661 let _WhereStream$ = dart.generic(function(T) {
3662 class _WhereStream extends _ForwardingStream$(T, T) {
3663 _WhereStream(source, test) {
3664 this[_test] = test;
3665 super._ForwardingStream(source);
3666 }
3667 [_handleData](inputEvent, sink) {
3668 let satisfies = null;
3669 try {
3670 satisfies = this[_test](inputEvent);
3671 } catch (e) {
3672 let s = dart.stackTrace(e);
3673 _addErrorWithReplacement(sink, e, s);
3674 return;
3675 }
3676
3677 if (satisfies) {
3678 sink._add(inputEvent);
3679 }
3680 }
3681 }
3682 return _WhereStream;
3683 });
3684 let _WhereStream = _WhereStream$(dart.dynamic);
3685 let _transform = Symbol('_transform');
3686 let _MapStream$ = dart.generic(function(S, T) {
3687 class _MapStream extends _ForwardingStream$(S, T) {
3688 _MapStream(source, transform) {
3689 this[_transform] = transform;
3690 super._ForwardingStream(source);
3691 }
3692 [_handleData](inputEvent, sink) {
3693 let outputEvent = null;
3694 try {
3695 outputEvent = dart.as(dart.dinvokef(this[_transform], inputEvent), T);
3696 } catch (e) {
3697 let s = dart.stackTrace(e);
3698 _addErrorWithReplacement(sink, e, s);
3699 return;
3700 }
3701
3702 sink._add(outputEvent);
3703 }
3704 }
3705 return _MapStream;
3706 });
3707 let _MapStream = _MapStream$(dart.dynamic, dart.dynamic);
3708 let _expand = Symbol('_expand');
3709 let _ExpandStream$ = dart.generic(function(S, T) {
3710 class _ExpandStream extends _ForwardingStream$(S, T) {
3711 _ExpandStream(source, expand) {
3712 this[_expand] = expand;
3713 super._ForwardingStream(source);
3714 }
3715 [_handleData](inputEvent, sink) {
3716 try {
3717 for (let value of this[_expand](inputEvent)) {
3718 sink._add(value);
3719 }
3720 } catch (e) {
3721 let s = dart.stackTrace(e);
3722 _addErrorWithReplacement(sink, e, s);
3723 }
3724
3725 }
3726 }
3727 return _ExpandStream;
3728 });
3729 let _ExpandStream = _ExpandStream$(dart.dynamic, dart.dynamic);
3730 let _HandleErrorStream$ = dart.generic(function(T) {
3731 class _HandleErrorStream extends _ForwardingStream$(T, T) {
3732 _HandleErrorStream(source, onError, test) {
3733 this[_transform] = onError;
3734 this[_test] = test;
3735 super._ForwardingStream(source);
3736 }
3737 [_handleError](error, stackTrace, sink) {
3738 let matches = true;
3739 if (this[_test] !== null) {
3740 try {
3741 matches = dart.dinvokef(this[_test], error);
3742 } catch (e) {
3743 let s = dart.stackTrace(e);
3744 _addErrorWithReplacement(sink, e, s);
3745 return;
3746 }
3747
3748 }
3749 if (matches) {
3750 try {
3751 _invokeErrorHandler(this[_transform], error, stackTrace);
3752 } catch (e) {
3753 let s = dart.stackTrace(e);
3754 if (core.identical(e, error)) {
3755 sink._addError(error, stackTrace);
3756 } else {
3757 _addErrorWithReplacement(sink, e, s);
3758 }
3759 return;
3760 }
3761
3762 } else {
3763 sink._addError(error, stackTrace);
3764 }
3765 }
3766 }
3767 return _HandleErrorStream;
3768 });
3769 let _HandleErrorStream = _HandleErrorStream$(dart.dynamic);
3770 let _remaining = Symbol('_remaining');
3771 let _TakeStream$ = dart.generic(function(T) {
3772 class _TakeStream extends _ForwardingStream$(T, T) {
3773 _TakeStream(source, count) {
3774 this[_remaining] = count;
3775 super._ForwardingStream(source);
3776 if (!(typeof count == number))
3777 throw new core.ArgumentError(count);
3778 }
3779 [_handleData](inputEvent, sink) {
3780 if (dart.notNull(this[_remaining]) > 0) {
3781 sink._add(inputEvent);
3782 this[_remaining] = 1;
3783 if (this[_remaining] === 0) {
3784 sink._close();
3785 }
3786 }
3787 }
3788 }
3789 return _TakeStream;
3790 });
3791 let _TakeStream = _TakeStream$(dart.dynamic);
3792 let _TakeWhileStream$ = dart.generic(function(T) {
3793 class _TakeWhileStream extends _ForwardingStream$(T, T) {
3794 _TakeWhileStream(source, test) {
3795 this[_test] = test;
3796 super._ForwardingStream(source);
3797 }
3798 [_handleData](inputEvent, sink) {
3799 let satisfies = null;
3800 try {
3801 satisfies = this[_test](inputEvent);
3802 } catch (e) {
3803 let s = dart.stackTrace(e);
3804 _addErrorWithReplacement(sink, e, s);
3805 sink._close();
3806 return;
3807 }
3808
3809 if (satisfies) {
3810 sink._add(inputEvent);
3811 } else {
3812 sink._close();
3813 }
3814 }
3815 }
3816 return _TakeWhileStream;
3817 });
3818 let _TakeWhileStream = _TakeWhileStream$(dart.dynamic);
3819 let _SkipStream$ = dart.generic(function(T) {
3820 class _SkipStream extends _ForwardingStream$(T, T) {
3821 _SkipStream(source, count) {
3822 this[_remaining] = count;
3823 super._ForwardingStream(source);
3824 if (dart.notNull(!(typeof count == number)) || dart.notNull(count) < 0)
3825 throw new core.ArgumentError(count);
3826 }
3827 [_handleData](inputEvent, sink) {
3828 if (dart.notNull(this[_remaining]) > 0) {
3829 this[_remaining] = dart.notNull(this[_remaining]) - 1;
3830 return;
3831 }
3832 sink._add(inputEvent);
3833 }
3834 }
3835 return _SkipStream;
3836 });
3837 let _SkipStream = _SkipStream$(dart.dynamic);
3838 let _hasFailed = Symbol('_hasFailed');
3839 let _SkipWhileStream$ = dart.generic(function(T) {
3840 class _SkipWhileStream extends _ForwardingStream$(T, T) {
3841 _SkipWhileStream(source, test) {
3842 this[_test] = test;
3843 this[_hasFailed] = false;
3844 super._ForwardingStream(source);
3845 }
3846 [_handleData](inputEvent, sink) {
3847 if (this[_hasFailed]) {
3848 sink._add(inputEvent);
3849 return;
3850 }
3851 let satisfies = null;
3852 try {
3853 satisfies = this[_test](inputEvent);
3854 } catch (e) {
3855 let s = dart.stackTrace(e);
3856 _addErrorWithReplacement(sink, e, s);
3857 this[_hasFailed] = true;
3858 return;
3859 }
3860
3861 if (!dart.notNull(satisfies)) {
3862 this[_hasFailed] = true;
3863 sink._add(inputEvent);
3864 }
3865 }
3866 }
3867 return _SkipWhileStream;
3868 });
3869 let _SkipWhileStream = _SkipWhileStream$(dart.dynamic);
3870 let _equals = Symbol('_equals');
3871 let _DistinctStream$ = dart.generic(function(T) {
3872 class _DistinctStream extends _ForwardingStream$(T, T) {
3873 _DistinctStream(source, equals) {
3874 this[_previous] = _SENTINEL;
3875 this[_equals] = equals;
3876 super._ForwardingStream(source);
3877 }
3878 [_handleData](inputEvent, sink) {
3879 if (core.identical(this[_previous], _SENTINEL)) {
3880 this[_previous] = inputEvent;
3881 return sink._add(inputEvent);
3882 } else {
3883 let isEqual = null;
3884 try {
3885 if (this[_equals] === null) {
3886 isEqual = dart.equals(this[_previous], inputEvent);
3887 } else {
3888 isEqual = this[_equals](dart.as(this[_previous], T), inputEvent);
3889 }
3890 } catch (e) {
3891 let s = dart.stackTrace(e);
3892 _addErrorWithReplacement(sink, e, s);
3893 return null;
3894 }
3895
3896 if (!dart.notNull(isEqual)) {
3897 sink._add(inputEvent);
3898 this[_previous] = inputEvent;
3899 }
3900 }
3901 }
3902 }
3903 dart.defineLazyProperties(_DistinctStream, {
3904 get _SENTINEL() {
3905 return new core.Object();
3906 },
3907 set _SENTINEL(_) {}
3908 });
3909 return _DistinctStream;
3910 });
3911 let _DistinctStream = _DistinctStream$(dart.dynamic);
3912 let _EventSinkWrapper$ = dart.generic(function(T) {
3913 class _EventSinkWrapper extends core.Object {
3914 _EventSinkWrapper($_sink) {
3915 this[_sink] = $_sink;
3916 }
3917 add(data) {
3918 this[_sink]._add(data);
3919 }
3920 addError(error, stackTrace) {
3921 if (stackTrace === void 0)
3922 stackTrace = null;
3923 this[_sink]._addError(error, stackTrace);
3924 }
3925 close() {
3926 this[_sink]._close();
3927 }
3928 }
3929 return _EventSinkWrapper;
3930 });
3931 let _EventSinkWrapper = _EventSinkWrapper$(dart.dynamic);
3932 let _transformerSink = Symbol('_transformerSink');
3933 let _isSubscribed = Symbol('_isSubscribed');
3934 let _SinkTransformerStreamSubscription$ = dart.generic(function(S, T) {
3935 class _SinkTransformerStreamSubscription extends _BufferingStreamSubscriptio n$(T) {
3936 _SinkTransformerStreamSubscription(source, mapper, onData, onError, onDone , cancelOnError) {
3937 this[_transformerSink] = null;
3938 this[_subscription] = null;
3939 super._BufferingStreamSubscription(onData, onError, onDone, cancelOnErro r);
3940 let eventSink = new _EventSinkWrapper(this);
3941 this[_transformerSink] = mapper(eventSink);
3942 this[_subscription] = source.listen(this[_handleData], {onError: this[_h andleError], onDone: this[_handleDone]});
3943 }
3944 get [_isSubscribed]() {
3945 return this[_subscription] !== null;
3946 }
3947 [_add](data) {
3948 if (this[_isClosed]) {
3949 throw new core.StateError("Stream is already closed");
3950 }
3951 super._add(data);
3952 }
3953 [_addError](error, stackTrace) {
3954 if (this[_isClosed]) {
3955 throw new core.StateError("Stream is already closed");
3956 }
3957 super._addError(error, stackTrace);
3958 }
3959 [_close]() {
3960 if (this[_isClosed]) {
3961 throw new core.StateError("Stream is already closed");
3962 }
3963 super._close();
3964 }
3965 [_onPause]() {
3966 if (this[_isSubscribed])
3967 this[_subscription].pause();
3968 }
3969 [_onResume]() {
3970 if (this[_isSubscribed])
3971 this[_subscription].resume();
3972 }
3973 [_onCancel]() {
3974 if (this[_isSubscribed]) {
3975 let subscription = this[_subscription];
3976 this[_subscription] = null;
3977 subscription.cancel();
3978 }
3979 return null;
3980 }
3981 [_handleData](data) {
3982 try {
3983 this[_transformerSink].add(data);
3984 } catch (e) {
3985 let s = dart.stackTrace(e);
3986 this[_addError](e, s);
3987 }
3988
3989 }
3990 [_handleError](error, stackTrace) {
3991 if (stackTrace === void 0)
3992 stackTrace = null;
3993 try {
3994 this[_transformerSink].addError(error, dart.as(stackTrace, core.StackT race));
3995 } catch (e) {
3996 let s = dart.stackTrace(e);
3997 if (core.identical(e, error)) {
3998 this[_addError](error, dart.as(stackTrace, core.StackTrace));
3999 } else {
4000 this[_addError](e, s);
4001 }
4002 }
4003
4004 }
4005 [_handleDone]() {
4006 try {
4007 this[_subscription] = null;
4008 this[_transformerSink].close();
4009 } catch (e) {
4010 let s = dart.stackTrace(e);
4011 this[_addError](e, s);
4012 }
4013
4014 }
4015 }
4016 return _SinkTransformerStreamSubscription;
4017 });
4018 let _SinkTransformerStreamSubscription = _SinkTransformerStreamSubscription$(d art.dynamic, dart.dynamic);
4019 let _sinkMapper = Symbol('_sinkMapper');
4020 let _StreamSinkTransformer$ = dart.generic(function(S, T) {
4021 class _StreamSinkTransformer extends core.Object {
4022 _StreamSinkTransformer($_sinkMapper) {
4023 this[_sinkMapper] = $_sinkMapper;
4024 }
4025 bind(stream) {
4026 return new _BoundSinkStream(stream, this[_sinkMapper]);
4027 }
4028 }
4029 return _StreamSinkTransformer;
4030 });
4031 let _StreamSinkTransformer = _StreamSinkTransformer$(dart.dynamic, dart.dynami c);
4032 let _BoundSinkStream$ = dart.generic(function(S, T) {
4033 class _BoundSinkStream extends Stream$(T) {
4034 get isBroadcast() {
4035 return this[_stream].isBroadcast;
4036 }
4037 _BoundSinkStream($_stream, $_sinkMapper) {
4038 this[_stream] = $_stream;
4039 this[_sinkMapper] = $_sinkMapper;
4040 super.Stream();
4041 }
4042 listen(onData, opt$) {
4043 let onError = opt$.onError === void 0 ? null : opt$.onError;
4044 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
4045 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
4046 cancelOnError = core.identical(true, cancelOnError);
4047 let subscription = dart.as(new _SinkTransformerStreamSubscription(this[_ stream], dart.closureWrap(this[_sinkMapper], "(EventSink<dynamic>) → EventSink") , onData, onError, onDone, cancelOnError), StreamSubscription$(T));
4048 return subscription;
4049 }
4050 }
4051 return _BoundSinkStream;
4052 });
4053 let _BoundSinkStream = _BoundSinkStream$(dart.dynamic, dart.dynamic);
4054 let _HandlerEventSink$ = dart.generic(function(S, T) {
4055 class _HandlerEventSink extends core.Object {
4056 _HandlerEventSink($_handleData, $_handleError, $_handleDone, $_sink) {
4057 this[_handleData] = $_handleData;
4058 this[_handleError] = $_handleError;
4059 this[_handleDone] = $_handleDone;
4060 this[_sink] = $_sink;
4061 }
4062 add(data) {
4063 return this[_handleData](data, this[_sink]);
4064 }
4065 addError(error, stackTrace) {
4066 if (stackTrace === void 0)
4067 stackTrace = null;
4068 return this[_handleError](error, stackTrace, this[_sink]);
4069 }
4070 close() {
4071 return this[_handleDone](this[_sink]);
4072 }
4073 }
4074 return _HandlerEventSink;
4075 });
4076 let _HandlerEventSink = _HandlerEventSink$(dart.dynamic, dart.dynamic);
4077 let _defaultHandleData = Symbol('_defaultHandleData');
4078 let _defaultHandleError = Symbol('_defaultHandleError');
4079 let _defaultHandleDone = Symbol('_defaultHandleDone');
4080 let _StreamHandlerTransformer$ = dart.generic(function(S, T) {
4081 class _StreamHandlerTransformer extends _StreamSinkTransformer$(S, T) {
4082 _StreamHandlerTransformer(opt$) {
4083 let handleData = opt$.handleData === void 0 ? null : opt$.handleData;
4084 let handleError = opt$.handleError === void 0 ? null : opt$.handleError;
4085 let handleDone = opt$.handleDone === void 0 ? null : opt$.handleDone;
4086 super._StreamSinkTransformer(dart.closureWrap((outputSink) => {
4087 if (handleData === null)
4088 handleData = dart.closureWrap(_defaultHandleData, "(S, EventSink<T>) → void");
4089 if (handleError === null)
4090 handleError = dart.closureWrap(_defaultHandleError, "(Object, StackT race, EventSink<T>) → void");
4091 if (handleDone === null)
4092 handleDone = _defaultHandleDone;
4093 return new _HandlerEventSink(handleData, handleError, handleDone, outp utSink);
4094 }, "(EventSink<T>) → EventSink<S>"));
4095 }
4096 bind(stream) {
4097 return super.bind(stream);
4098 }
4099 static [_defaultHandleData](data, sink) {
4100 sink.add(data);
4101 }
4102 static [_defaultHandleError](error, stackTrace, sink) {
4103 sink.addError(error);
4104 }
4105 static [_defaultHandleDone](sink) {
4106 sink.close();
4107 }
4108 }
4109 return _StreamHandlerTransformer;
4110 });
4111 let _StreamHandlerTransformer = _StreamHandlerTransformer$(dart.dynamic, dart. dynamic);
4112 let _transformer = Symbol('_transformer');
4113 let _StreamSubscriptionTransformer$ = dart.generic(function(S, T) {
4114 class _StreamSubscriptionTransformer extends core.Object {
4115 _StreamSubscriptionTransformer($_transformer) {
4116 this[_transformer] = $_transformer;
4117 }
4118 bind(stream) {
4119 return new _BoundSubscriptionStream(stream, this[_transformer]);
4120 }
4121 }
4122 return _StreamSubscriptionTransformer;
4123 });
4124 let _StreamSubscriptionTransformer = _StreamSubscriptionTransformer$(dart.dyna mic, dart.dynamic);
4125 let _BoundSubscriptionStream$ = dart.generic(function(S, T) {
4126 class _BoundSubscriptionStream extends Stream$(T) {
4127 _BoundSubscriptionStream($_stream, $_transformer) {
4128 this[_stream] = $_stream;
4129 this[_transformer] = $_transformer;
4130 super.Stream();
4131 }
4132 listen(onData, opt$) {
4133 let onError = opt$.onError === void 0 ? null : opt$.onError;
4134 let onDone = opt$.onDone === void 0 ? null : opt$.onDone;
4135 let cancelOnError = opt$.cancelOnError === void 0 ? null : opt$.cancelOn Error;
4136 cancelOnError = core.identical(true, cancelOnError);
4137 let result = this[_transformer](this[_stream], cancelOnError);
4138 result.onData(onData);
4139 result.onError(onError);
4140 result.onDone(onDone);
4141 return result;
4142 }
4143 }
4144 return _BoundSubscriptionStream;
4145 });
4146 let _BoundSubscriptionStream = _BoundSubscriptionStream$(dart.dynamic, dart.dy namic);
4147 let _createTimer = Symbol('_createTimer');
4148 let _createPeriodicTimer = Symbol('_createPeriodicTimer');
4149 class Timer extends core.Object {
4150 Timer(duration, callback) {
4151 if (dart.equals(Zone.current, Zone.ROOT)) {
4152 return Zone.current.createTimer(duration, callback);
4153 }
4154 return Zone.current.createTimer(duration, Zone.current.bindCallback(callba ck, {runGuarded: true}));
4155 }
4156 Timer$periodic(duration, callback) {
4157 if (dart.equals(Zone.current, Zone.ROOT)) {
4158 return Zone.current.createPeriodicTimer(duration, callback);
4159 }
4160 return Zone.current.createPeriodicTimer(duration, dart.closureWrap(Zone.cu rrent.bindUnaryCallback(callback, {runGuarded: true}), "(Timer) → void"));
4161 }
4162 static run(callback) {
4163 new Timer(core.Duration.ZERO, callback);
4164 }
4165 static [_createTimer](duration, callback) {
4166 let milliseconds = duration.inMilliseconds;
4167 if (dart.notNull(milliseconds) < 0)
4168 milliseconds = 0;
4169 return new _isolate_helper.TimerImpl(milliseconds, callback);
4170 }
4171 static [_createPeriodicTimer](duration, callback) {
4172 let milliseconds = duration.inMilliseconds;
4173 if (dart.notNull(milliseconds) < 0)
4174 milliseconds = 0;
4175 return new _isolate_helper.TimerImpl.periodic(milliseconds, callback);
4176 }
4177 }
4178 dart.defineNamedConstructor(Timer, 'periodic');
4179 class _ZoneFunction extends core.Object {
4180 _ZoneFunction(zone, function) {
4181 this.zone = zone;
4182 this['function'] = function;
4183 }
4184 }
4185 class ZoneSpecification extends core.Object {
4186 ZoneSpecification(opt$) {
4187 return new _ZoneSpecification(opt$);
4188 }
4189 ZoneSpecification$from(other, opt$) {
4190 let handleUncaughtError = opt$.handleUncaughtError === void 0 ? null : opt $.handleUncaughtError;
4191 let run = opt$.run === void 0 ? null : opt$.run;
4192 let runUnary = opt$.runUnary === void 0 ? null : opt$.runUnary;
4193 let runBinary = opt$.runBinary === void 0 ? null : opt$.runBinary;
4194 let registerCallback = opt$.registerCallback === void 0 ? null : opt$.regi sterCallback;
4195 let registerUnaryCallback = opt$.registerUnaryCallback === void 0 ? null : opt$.registerUnaryCallback;
4196 let registerBinaryCallback = opt$.registerBinaryCallback === void 0 ? null : opt$.registerBinaryCallback;
4197 let errorCallback = opt$.errorCallback === void 0 ? null : opt$.errorCallb ack;
4198 let scheduleMicrotask = opt$.scheduleMicrotask === void 0 ? null : opt$.sc heduleMicrotask;
4199 let createTimer = opt$.createTimer === void 0 ? null : opt$.createTimer;
4200 let createPeriodicTimer = opt$.createPeriodicTimer === void 0 ? null : opt $.createPeriodicTimer;
4201 let print = opt$.print === void 0 ? null : opt$.print;
4202 let fork = opt$.fork === void 0 ? null : opt$.fork;
4203 return new ZoneSpecification({handleUncaughtError: dart.as(handleUncaughtE rror !== null ? handleUncaughtError : other.handleUncaughtError, dart.throw_("Un implemented type (Zone, ZoneDelegate, Zone, dynamic, StackTrace) → dynamic")), r un: dart.as(run !== null ? run : other.run, dart.throw_("Unimplemented type (Zon e, ZoneDelegate, Zone, () → dynamic) → dynamic")), runUnary: dart.as(runUnary != = null ? runUnary : other.runUnary, dart.throw_("Unimplemented type (Zone, ZoneD elegate, Zone, (dynamic) → dynamic, dynamic) → dynamic")), runBinary: dart.as(ru nBinary !== null ? runBinary : other.runBinary, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic, dynamic, dynamic) → dyn amic")), registerCallback: dart.as(registerCallback !== null ? registerCallback : other.registerCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Z one, () → dynamic) → ZoneCallback")), registerUnaryCallback: dart.as(registerUna ryCallback !== null ? registerUnaryCallback : other.registerUnaryCallback, dart. throw_("Unimplemented type (Zone, ZoneDelegate, Zone, (dynamic) → dynamic) → Zon eUnaryCallback")), registerBinaryCallback: dart.as(registerBinaryCallback !== nu ll ? registerBinaryCallback : other.registerBinaryCallback, dart.throw_("Unimple mented type (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic) → ZoneBinar yCallback")), errorCallback: dart.as(errorCallback !== null ? errorCallback : ot her.errorCallback, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, Ob ject, StackTrace) → AsyncError")), scheduleMicrotask: dart.as(scheduleMicrotask !== null ? scheduleMicrotask : other.scheduleMicrotask, dart.throw_("Unimplement ed type (Zone, ZoneDelegate, Zone, () → dynamic) → void")), createTimer: dart.as (createTimer !== null ? createTimer : other.createTimer, dart.throw_("Unimplemen ted type (Zone, ZoneDelegate, Zone, Duration, () → void) → Timer")), createPerio dicTimer: dart.as(createPeriodicTimer !== null ? createPeriodicTimer : other.cre atePeriodicTimer, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, Dur ation, (Timer) → void) → Timer")), print: dart.as(print !== null ? print : other .print, dart.throw_("Unimplemented type (Zone, ZoneDelegate, Zone, String) → voi d")), fork: dart.as(fork !== null ? fork : other.fork, dart.throw_("Unimplemente d type (Zone, ZoneDelegate, Zone, ZoneSpecification, Map<dynamic, dynamic>) → Zo ne"))});
4204 }
4205 }
4206 dart.defineNamedConstructor(ZoneSpecification, 'from');
4207 class _ZoneSpecification extends core.Object {
4208 _ZoneSpecification(opt$) {
4209 let handleUncaughtError = opt$.handleUncaughtError === void 0 ? null : opt $.handleUncaughtError;
4210 let run = opt$.run === void 0 ? null : opt$.run;
4211 let runUnary = opt$.runUnary === void 0 ? null : opt$.runUnary;
4212 let runBinary = opt$.runBinary === void 0 ? null : opt$.runBinary;
4213 let registerCallback = opt$.registerCallback === void 0 ? null : opt$.regi sterCallback;
4214 let registerUnaryCallback = opt$.registerUnaryCallback === void 0 ? null : opt$.registerUnaryCallback;
4215 let registerBinaryCallback = opt$.registerBinaryCallback === void 0 ? null : opt$.registerBinaryCallback;
4216 let errorCallback = opt$.errorCallback === void 0 ? null : opt$.errorCallb ack;
4217 let scheduleMicrotask = opt$.scheduleMicrotask === void 0 ? null : opt$.sc heduleMicrotask;
4218 let createTimer = opt$.createTimer === void 0 ? null : opt$.createTimer;
4219 let createPeriodicTimer = opt$.createPeriodicTimer === void 0 ? null : opt $.createPeriodicTimer;
4220 let print = opt$.print === void 0 ? null : opt$.print;
4221 let fork = opt$.fork === void 0 ? null : opt$.fork;
4222 this.handleUncaughtError = handleUncaughtError;
4223 this.run = run;
4224 this.runUnary = runUnary;
4225 this.runBinary = runBinary;
4226 this.registerCallback = registerCallback;
4227 this.registerUnaryCallback = registerUnaryCallback;
4228 this.registerBinaryCallback = registerBinaryCallback;
4229 this.errorCallback = errorCallback;
4230 this.scheduleMicrotask = scheduleMicrotask;
4231 this.createTimer = createTimer;
4232 this.createPeriodicTimer = createPeriodicTimer;
4233 this.print = print;
4234 this.fork = fork;
4235 }
4236 }
4237 class ZoneDelegate extends core.Object {
4238 }
4239 let _enter = Symbol('_enter');
4240 let _leave = Symbol('_leave');
4241 class Zone extends core.Object {
4242 Zone$_() {
4243 }
4244 static get current() {
4245 return _current;
4246 }
4247 static [_enter](zone) {
4248 dart.assert(zone !== null);
4249 dart.assert(!dart.notNull(core.identical(zone, _current)));
4250 let previous = _current;
4251 _current = zone;
4252 return previous;
4253 }
4254 static [_leave](previous) {
4255 dart.assert(previous !== null);
4256 Zone[_current] = previous;
4257 }
4258 }
4259 dart.defineNamedConstructor(Zone, '_');
4260 Zone.ROOT = _ROOT_ZONE;
4261 Zone._current = _ROOT_ZONE;
4262 let _delegate = Symbol('_delegate');
4263 // Function _parentDelegate: (_Zone) → ZoneDelegate
4264 function _parentDelegate(zone) {
4265 if (zone.parent === null)
4266 return null;
4267 return zone.parent[_delegate];
4268 }
4269 let _delegationTarget = Symbol('_delegationTarget');
4270 let _handleUncaughtError = Symbol('_handleUncaughtError');
4271 let _run = Symbol('_run');
4272 let _runUnary = Symbol('_runUnary');
4273 let _runBinary = Symbol('_runBinary');
4274 let _registerCallback = Symbol('_registerCallback');
4275 let _registerUnaryCallback = Symbol('_registerUnaryCallback');
4276 let _registerBinaryCallback = Symbol('_registerBinaryCallback');
4277 let _errorCallback = Symbol('_errorCallback');
4278 let _scheduleMicrotask = Symbol('_scheduleMicrotask');
4279 let _print = Symbol('_print');
4280 let _fork = Symbol('_fork');
4281 class _ZoneDelegate extends core.Object {
4282 _ZoneDelegate($_delegationTarget) {
4283 this[_delegationTarget] = $_delegationTarget;
4284 }
4285 handleUncaughtError(zone, error, stackTrace) {
4286 let implementation = this[_delegationTarget][_handleUncaughtError];
4287 let implZone = implementation.zone;
4288 return dart.dinvokef(implementation['function'], implZone, _parentDelegate (implZone), zone, error, stackTrace);
4289 }
4290 run(zone, f) {
4291 let implementation = this[_delegationTarget][_run];
4292 let implZone = implementation.zone;
4293 return dart.dinvokef(implementation['function'], implZone, _parentDelegate (implZone), zone, f);
4294 }
4295 runUnary(zone, f, arg) {
4296 let implementation = this[_delegationTarget][_runUnary];
4297 let implZone = implementation.zone;
4298 return dart.dinvokef(implementation['function'], implZone, _parentDelegate (implZone), zone, f, arg);
4299 }
4300 runBinary(zone, f, arg1, arg2) {
4301 let implementation = this[_delegationTarget][_runBinary];
4302 let implZone = implementation.zone;
4303 return dart.dinvokef(implementation['function'], implZone, _parentDelegate (implZone), zone, f, arg1, arg2);
4304 }
4305 registerCallback(zone, f) {
4306 let implementation = this[_delegationTarget][_registerCallback];
4307 let implZone = implementation.zone;
4308 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, f), ZoneCallback);
4309 }
4310 registerUnaryCallback(zone, f) {
4311 let implementation = this[_delegationTarget][_registerUnaryCallback];
4312 let implZone = implementation.zone;
4313 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, f), ZoneUnaryCallback);
4314 }
4315 registerBinaryCallback(zone, f) {
4316 let implementation = this[_delegationTarget][_registerBinaryCallback];
4317 let implZone = implementation.zone;
4318 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, f), ZoneBinaryCallback);
4319 }
4320 errorCallback(zone, error, stackTrace) {
4321 let implementation = this[_delegationTarget][_errorCallback];
4322 let implZone = implementation.zone;
4323 if (core.identical(implZone, _ROOT_ZONE))
4324 return null;
4325 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, error, stackTrace), AsyncError);
4326 }
4327 scheduleMicrotask(zone, f) {
4328 let implementation = this[_delegationTarget][_scheduleMicrotask];
4329 let implZone = implementation.zone;
4330 dart.dinvokef(implementation['function'], implZone, _parentDelegate(implZo ne), zone, f);
4331 }
4332 createTimer(zone, duration, f) {
4333 let implementation = this[_delegationTarget][_createTimer];
4334 let implZone = implementation.zone;
4335 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, duration, f), Timer);
4336 }
4337 createPeriodicTimer(zone, period, f) {
4338 let implementation = this[_delegationTarget][_createPeriodicTimer];
4339 let implZone = implementation.zone;
4340 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, period, f), Timer);
4341 }
4342 print(zone, line) {
4343 let implementation = this[_delegationTarget][_print];
4344 let implZone = implementation.zone;
4345 dart.dinvokef(implementation['function'], implZone, _parentDelegate(implZo ne), zone, line);
4346 }
4347 fork(zone, specification, zoneValues) {
4348 let implementation = this[_delegationTarget][_fork];
4349 let implZone = implementation.zone;
4350 return dart.as(dart.dinvokef(implementation['function'], implZone, _parent Delegate(implZone), zone, specification, zoneValues), Zone);
4351 }
4352 }
4353 class _Zone extends core.Object {
4354 _Zone() {
4355 }
4356 inSameErrorZone(otherZone) {
4357 return dart.notNull(core.identical(this, otherZone)) || dart.notNull(core. identical(this.errorZone, otherZone.errorZone));
4358 }
4359 }
4360 let _delegateCache = Symbol('_delegateCache');
4361 let _map = Symbol('_map');
4362 class _CustomZone extends _Zone {
4363 get [_delegate]() {
4364 if (this[_delegateCache] !== null)
4365 return this[_delegateCache];
4366 this[_delegateCache] = new _ZoneDelegate(this);
4367 return this[_delegateCache];
4368 }
4369 _CustomZone(parent, specification, $_map) {
4370 this.parent = parent;
4371 this[_map] = $_map;
4372 this[_runUnary] = null;
4373 this[_run] = null;
4374 this[_runBinary] = null;
4375 this[_registerCallback] = null;
4376 this[_registerUnaryCallback] = null;
4377 this[_registerBinaryCallback] = null;
4378 this[_errorCallback] = null;
4379 this[_scheduleMicrotask] = null;
4380 this[_createTimer] = null;
4381 this[_createPeriodicTimer] = null;
4382 this[_print] = null;
4383 this[_fork] = null;
4384 this[_handleUncaughtError] = null;
4385 this[_delegateCache] = null;
4386 super._Zone();
4387 this[_run] = specification.run !== null ? new _ZoneFunction(this, specific ation.run) : this.parent[_run];
4388 this[_runUnary] = specification.runUnary !== null ? new _ZoneFunction(this , specification.runUnary) : this.parent[_runUnary];
4389 this[_runBinary] = specification.runBinary !== null ? new _ZoneFunction(th is, specification.runBinary) : this.parent[_runBinary];
4390 this[_registerCallback] = specification.registerCallback !== null ? new _Z oneFunction(this, specification.registerCallback) : this.parent[_registerCallbac k];
4391 this[_registerUnaryCallback] = specification.registerUnaryCallback !== nul l ? new _ZoneFunction(this, specification.registerUnaryCallback) : this.parent[_ registerUnaryCallback];
4392 this[_registerBinaryCallback] = specification.registerBinaryCallback !== n ull ? new _ZoneFunction(this, specification.registerBinaryCallback) : this.paren t[_registerBinaryCallback];
4393 this[_errorCallback] = specification.errorCallback !== null ? new _ZoneFun ction(this, specification.errorCallback) : this.parent[_errorCallback];
4394 this[_scheduleMicrotask] = specification.scheduleMicrotask !== null ? new _ZoneFunction(this, specification.scheduleMicrotask) : this.parent[_scheduleMicr otask];
4395 this[_createTimer] = specification.createTimer !== null ? new _ZoneFunctio n(this, specification.createTimer) : this.parent[_createTimer];
4396 this[_createPeriodicTimer] = specification.createPeriodicTimer !== null ? new _ZoneFunction(this, specification.createPeriodicTimer) : this.parent[_create PeriodicTimer];
4397 this[_print] = specification.print !== null ? new _ZoneFunction(this, spec ification.print) : this.parent[_print];
4398 this[_fork] = specification.fork !== null ? new _ZoneFunction(this, specif ication.fork) : this.parent[_fork];
4399 this[_handleUncaughtError] = specification.handleUncaughtError !== null ? new _ZoneFunction(this, specification.handleUncaughtError) : this.parent[_handle UncaughtError];
4400 }
4401 get errorZone() {
4402 return this[_handleUncaughtError].zone;
4403 }
4404 runGuarded(f) {
4405 try {
4406 return this.run(f);
4407 } catch (e) {
4408 let s = dart.stackTrace(e);
4409 return this.handleUncaughtError(e, s);
4410 }
4411
4412 }
4413 runUnaryGuarded(f, arg) {
4414 try {
4415 return this.runUnary(f, arg);
4416 } catch (e) {
4417 let s = dart.stackTrace(e);
4418 return this.handleUncaughtError(e, s);
4419 }
4420
4421 }
4422 runBinaryGuarded(f, arg1, arg2) {
4423 try {
4424 return this.runBinary(f, arg1, arg2);
4425 } catch (e) {
4426 let s = dart.stackTrace(e);
4427 return this.handleUncaughtError(e, s);
4428 }
4429
4430 }
4431 bindCallback(f, opt$) {
4432 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4433 let registered = this.registerCallback(f);
4434 if (runGuarded) {
4435 return (() => this.runGuarded(registered)).bind(this);
4436 } else {
4437 return (() => this.run(registered)).bind(this);
4438 }
4439 }
4440 bindUnaryCallback(f, opt$) {
4441 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4442 let registered = this.registerUnaryCallback(f);
4443 if (runGuarded) {
4444 return ((arg) => this.runUnaryGuarded(registered, arg)).bind(this);
4445 } else {
4446 return ((arg) => this.runUnary(registered, arg)).bind(this);
4447 }
4448 }
4449 bindBinaryCallback(f, opt$) {
4450 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4451 let registered = this.registerBinaryCallback(f);
4452 if (runGuarded) {
4453 return ((arg1, arg2) => this.runBinaryGuarded(registered, arg1, arg2)).b ind(this);
4454 } else {
4455 return ((arg1, arg2) => this.runBinary(registered, arg1, arg2)).bind(thi s);
4456 }
4457 }
4458 get(key) {
4459 let result = this[_map].get(key);
4460 if (dart.notNull(result !== null) || dart.notNull(this[_map].containsKey(k ey)))
4461 return result;
4462 if (this.parent !== null) {
4463 let value = this.parent.get(key);
4464 if (value !== null) {
4465 this[_map].set(key, value);
4466 }
4467 return value;
4468 }
4469 dart.assert(dart.equals(this, _ROOT_ZONE));
4470 return null;
4471 }
4472 handleUncaughtError(error, stackTrace) {
4473 let implementation = this[_handleUncaughtError];
4474 dart.assert(implementation !== null);
4475 let parentDelegate = _parentDelegate(implementation.zone);
4476 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, error, stackTrace);
4477 }
4478 fork(opt$) {
4479 let specification = opt$.specification === void 0 ? null : opt$.specificat ion;
4480 let zoneValues = opt$.zoneValues === void 0 ? null : opt$.zoneValues;
4481 let implementation = this[_fork];
4482 dart.assert(implementation !== null);
4483 let parentDelegate = _parentDelegate(implementation.zone);
4484 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, specification, zoneValues), Zone);
4485 }
4486 run(f) {
4487 let implementation = this[_run];
4488 dart.assert(implementation !== null);
4489 let parentDelegate = _parentDelegate(implementation.zone);
4490 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, f);
4491 }
4492 runUnary(f, arg) {
4493 let implementation = this[_runUnary];
4494 dart.assert(implementation !== null);
4495 let parentDelegate = _parentDelegate(implementation.zone);
4496 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, f, arg);
4497 }
4498 runBinary(f, arg1, arg2) {
4499 let implementation = this[_runBinary];
4500 dart.assert(implementation !== null);
4501 let parentDelegate = _parentDelegate(implementation.zone);
4502 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, f, arg1, arg2);
4503 }
4504 registerCallback(f) {
4505 let implementation = this[_registerCallback];
4506 dart.assert(implementation !== null);
4507 let parentDelegate = _parentDelegate(implementation.zone);
4508 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, f), ZoneCallback);
4509 }
4510 registerUnaryCallback(f) {
4511 let implementation = this[_registerUnaryCallback];
4512 dart.assert(implementation !== null);
4513 let parentDelegate = _parentDelegate(implementation.zone);
4514 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, f), ZoneUnaryCallback);
4515 }
4516 registerBinaryCallback(f) {
4517 let implementation = this[_registerBinaryCallback];
4518 dart.assert(implementation !== null);
4519 let parentDelegate = _parentDelegate(implementation.zone);
4520 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, f), ZoneBinaryCallback);
4521 }
4522 errorCallback(error, stackTrace) {
4523 let implementation = this[_errorCallback];
4524 dart.assert(implementation !== null);
4525 let implementationZone = implementation.zone;
4526 if (core.identical(implementationZone, _ROOT_ZONE))
4527 return null;
4528 let parentDelegate = _parentDelegate(dart.as(implementationZone, _Zone));
4529 return dart.as(dart.dinvokef(implementation['function'], implementationZon e, parentDelegate, this, error, stackTrace), AsyncError);
4530 }
4531 scheduleMicrotask(f) {
4532 let implementation = this[_scheduleMicrotask];
4533 dart.assert(implementation !== null);
4534 let parentDelegate = _parentDelegate(implementation.zone);
4535 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, f);
4536 }
4537 createTimer(duration, f) {
4538 let implementation = this[_createTimer];
4539 dart.assert(implementation !== null);
4540 let parentDelegate = _parentDelegate(implementation.zone);
4541 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, duration, f), Timer);
4542 }
4543 createPeriodicTimer(duration, f) {
4544 let implementation = this[_createPeriodicTimer];
4545 dart.assert(implementation !== null);
4546 let parentDelegate = _parentDelegate(implementation.zone);
4547 return dart.as(dart.dinvokef(implementation['function'], implementation.zo ne, parentDelegate, this, duration, f), Timer);
4548 }
4549 print(line) {
4550 let implementation = this[_print];
4551 dart.assert(implementation !== null);
4552 let parentDelegate = _parentDelegate(implementation.zone);
4553 return dart.dinvokef(implementation['function'], implementation.zone, pare ntDelegate, this, line);
4554 }
4555 }
4556 // Function _rootHandleUncaughtError: (Zone, ZoneDelegate, Zone, dynamic, Stac kTrace) → void
4557 function _rootHandleUncaughtError(self, parent, zone, error, stackTrace) {
4558 _schedulePriorityAsyncCallback(() => {
4559 throw new _UncaughtAsyncError(error, stackTrace);
4560 });
4561 }
4562 // Function _rootRun: (Zone, ZoneDelegate, Zone, () → dynamic) → dynamic
4563 function _rootRun(self, parent, zone, f) {
4564 if (dart.equals(Zone[_current], zone))
4565 return f();
4566 let old = Zone._enter(zone);
4567 try {
4568 return f();
4569 } finally {
4570 Zone._leave(old);
4571 }
4572 }
4573 // Function _rootRunUnary: (Zone, ZoneDelegate, Zone, (dynamic) → dynamic, dyn amic) → dynamic
4574 function _rootRunUnary(self, parent, zone, f, arg) {
4575 if (dart.equals(Zone[_current], zone))
4576 return dart.dinvokef(f, arg);
4577 let old = Zone._enter(zone);
4578 try {
4579 return dart.dinvokef(f, arg);
4580 } finally {
4581 Zone._leave(old);
4582 }
4583 }
4584 // Function _rootRunBinary: (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dy namic, dynamic, dynamic) → dynamic
4585 function _rootRunBinary(self, parent, zone, f, arg1, arg2) {
4586 if (dart.equals(Zone[_current], zone))
4587 return dart.dinvokef(f, arg1, arg2);
4588 let old = Zone._enter(zone);
4589 try {
4590 return dart.dinvokef(f, arg1, arg2);
4591 } finally {
4592 Zone._leave(old);
4593 }
4594 }
4595 // Function _rootRegisterCallback: (Zone, ZoneDelegate, Zone, () → dynamic) → ZoneCallback
4596 function _rootRegisterCallback(self, parent, zone, f) {
4597 return f;
4598 }
4599 // Function _rootRegisterUnaryCallback: (Zone, ZoneDelegate, Zone, (dynamic) → dynamic) → ZoneUnaryCallback
4600 function _rootRegisterUnaryCallback(self, parent, zone, f) {
4601 return f;
4602 }
4603 // Function _rootRegisterBinaryCallback: (Zone, ZoneDelegate, Zone, (dynamic, dynamic) → dynamic) → ZoneBinaryCallback
4604 function _rootRegisterBinaryCallback(self, parent, zone, f) {
4605 return f;
4606 }
4607 // Function _rootErrorCallback: (Zone, ZoneDelegate, Zone, Object, StackTrace) → AsyncError
4608 function _rootErrorCallback(self, parent, zone, error, stackTrace) {
4609 return null;
4610 }
4611 // Function _rootScheduleMicrotask: (Zone, ZoneDelegate, Zone, () → dynamic) → void
4612 function _rootScheduleMicrotask(self, parent, zone, f) {
4613 if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) {
4614 let hasErrorHandler = !dart.notNull(_ROOT_ZONE.inSameErrorZone(zone));
4615 f = zone.bindCallback(f, {runGuarded: hasErrorHandler});
4616 }
4617 _scheduleAsyncCallback(f);
4618 }
4619 // Function _rootCreateTimer: (Zone, ZoneDelegate, Zone, Duration, () → void) → Timer
4620 function _rootCreateTimer(self, parent, zone, duration, callback) {
4621 if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) {
4622 callback = zone.bindCallback(callback);
4623 }
4624 return Timer._createTimer(duration, callback);
4625 }
4626 // Function _rootCreatePeriodicTimer: (Zone, ZoneDelegate, Zone, Duration, (Ti mer) → void) → Timer
4627 function _rootCreatePeriodicTimer(self, parent, zone, duration, callback) {
4628 if (!dart.notNull(core.identical(_ROOT_ZONE, zone))) {
4629 callback = dart.closureWrap(zone.bindUnaryCallback(callback), "(Timer) → v oid");
4630 }
4631 return Timer._createPeriodicTimer(duration, callback);
4632 }
4633 // Function _rootPrint: (Zone, ZoneDelegate, Zone, String) → void
4634 function _rootPrint(self, parent, zone, line) {
4635 _internal.printToConsole(line);
4636 }
4637 // Function _printToZone: (String) → void
4638 function _printToZone(line) {
4639 Zone.current.print(line);
4640 }
4641 // Function _rootFork: (Zone, ZoneDelegate, Zone, ZoneSpecification, Map<dynam ic, dynamic>) → Zone
4642 function _rootFork(self, parent, zone, specification, zoneValues) {
4643 _internal.printToZone = _printToZone;
4644 if (specification === null) {
4645 specification = new ZoneSpecification();
4646 } else if (!dart.is(specification, _ZoneSpecification)) {
4647 throw new core.ArgumentError("ZoneSpecifications must be instantiated" + " with the provided constructor.");
4648 }
4649 let valueMap = null;
4650 if (zoneValues === null) {
4651 if (dart.is(zone, _Zone)) {
4652 valueMap = zone[_map];
4653 } else {
4654 valueMap = new collection.HashMap();
4655 }
4656 } else {
4657 valueMap = new collection.HashMap.from(zoneValues);
4658 }
4659 return new _CustomZone(dart.as(zone, _Zone), specification, valueMap);
4660 }
4661 class _RootZoneSpecification extends core.Object {
4662 get handleUncaughtError() {
4663 return _rootHandleUncaughtError;
4664 }
4665 get run() {
4666 return _rootRun;
4667 }
4668 get runUnary() {
4669 return _rootRunUnary;
4670 }
4671 get runBinary() {
4672 return _rootRunBinary;
4673 }
4674 get registerCallback() {
4675 return _rootRegisterCallback;
4676 }
4677 get registerUnaryCallback() {
4678 return _rootRegisterUnaryCallback;
4679 }
4680 get registerBinaryCallback() {
4681 return _rootRegisterBinaryCallback;
4682 }
4683 get errorCallback() {
4684 return _rootErrorCallback;
4685 }
4686 get scheduleMicrotask() {
4687 return _rootScheduleMicrotask;
4688 }
4689 get createTimer() {
4690 return _rootCreateTimer;
4691 }
4692 get createPeriodicTimer() {
4693 return _rootCreatePeriodicTimer;
4694 }
4695 get print() {
4696 return _rootPrint;
4697 }
4698 get fork() {
4699 return _rootFork;
4700 }
4701 }
4702 class _RootZone extends _Zone {
4703 _RootZone() {
4704 super._Zone();
4705 }
4706 get [_run]() {
4707 return new _ZoneFunction(_ROOT_ZONE, _rootRun);
4708 }
4709 get [_runUnary]() {
4710 return new _ZoneFunction(_ROOT_ZONE, _rootRunUnary);
4711 }
4712 get [_runBinary]() {
4713 return new _ZoneFunction(_ROOT_ZONE, _rootRunBinary);
4714 }
4715 get [_registerCallback]() {
4716 return new _ZoneFunction(_ROOT_ZONE, _rootRegisterCallback);
4717 }
4718 get [_registerUnaryCallback]() {
4719 return new _ZoneFunction(_ROOT_ZONE, _rootRegisterUnaryCallback);
4720 }
4721 get [_registerBinaryCallback]() {
4722 return new _ZoneFunction(_ROOT_ZONE, _rootRegisterBinaryCallback);
4723 }
4724 get [_errorCallback]() {
4725 return new _ZoneFunction(_ROOT_ZONE, _rootErrorCallback);
4726 }
4727 get [_scheduleMicrotask]() {
4728 return new _ZoneFunction(_ROOT_ZONE, _rootScheduleMicrotask);
4729 }
4730 get [_createTimer]() {
4731 return new _ZoneFunction(_ROOT_ZONE, _rootCreateTimer);
4732 }
4733 get [_createPeriodicTimer]() {
4734 return new _ZoneFunction(_ROOT_ZONE, _rootCreatePeriodicTimer);
4735 }
4736 get [_print]() {
4737 return new _ZoneFunction(_ROOT_ZONE, _rootPrint);
4738 }
4739 get [_fork]() {
4740 return new _ZoneFunction(_ROOT_ZONE, _rootFork);
4741 }
4742 get [_handleUncaughtError]() {
4743 return new _ZoneFunction(_ROOT_ZONE, _rootHandleUncaughtError);
4744 }
4745 get parent() {
4746 return null;
4747 }
4748 get [_map]() {
4749 return _rootMap;
4750 }
4751 get [_delegate]() {
4752 if (_rootDelegate !== null)
4753 return _rootDelegate;
4754 return _rootDelegate = new _ZoneDelegate(this);
4755 }
4756 get errorZone() {
4757 return this;
4758 }
4759 runGuarded(f) {
4760 try {
4761 if (core.identical(_ROOT_ZONE, Zone[_current])) {
4762 return f();
4763 }
4764 return _rootRun(null, null, this, f);
4765 } catch (e) {
4766 let s = dart.stackTrace(e);
4767 return this.handleUncaughtError(e, s);
4768 }
4769
4770 }
4771 runUnaryGuarded(f, arg) {
4772 try {
4773 if (core.identical(_ROOT_ZONE, Zone[_current])) {
4774 return dart.dinvokef(f, arg);
4775 }
4776 return _rootRunUnary(null, null, this, f, arg);
4777 } catch (e) {
4778 let s = dart.stackTrace(e);
4779 return this.handleUncaughtError(e, s);
4780 }
4781
4782 }
4783 runBinaryGuarded(f, arg1, arg2) {
4784 try {
4785 if (core.identical(_ROOT_ZONE, Zone[_current])) {
4786 return dart.dinvokef(f, arg1, arg2);
4787 }
4788 return _rootRunBinary(null, null, this, f, arg1, arg2);
4789 } catch (e) {
4790 let s = dart.stackTrace(e);
4791 return this.handleUncaughtError(e, s);
4792 }
4793
4794 }
4795 bindCallback(f, opt$) {
4796 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4797 if (runGuarded) {
4798 return (() => this.runGuarded(f)).bind(this);
4799 } else {
4800 return (() => this.run(f)).bind(this);
4801 }
4802 }
4803 bindUnaryCallback(f, opt$) {
4804 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4805 if (runGuarded) {
4806 return ((arg) => this.runUnaryGuarded(f, arg)).bind(this);
4807 } else {
4808 return ((arg) => this.runUnary(f, arg)).bind(this);
4809 }
4810 }
4811 bindBinaryCallback(f, opt$) {
4812 let runGuarded = opt$.runGuarded === void 0 ? true : opt$.runGuarded;
4813 if (runGuarded) {
4814 return ((arg1, arg2) => this.runBinaryGuarded(f, arg1, arg2)).bind(this) ;
4815 } else {
4816 return ((arg1, arg2) => this.runBinary(f, arg1, arg2)).bind(this);
4817 }
4818 }
4819 get(key) {
4820 return null;
4821 }
4822 handleUncaughtError(error, stackTrace) {
4823 return _rootHandleUncaughtError(null, null, this, error, stackTrace);
4824 }
4825 fork(opt$) {
4826 let specification = opt$.specification === void 0 ? null : opt$.specificat ion;
4827 let zoneValues = opt$.zoneValues === void 0 ? null : opt$.zoneValues;
4828 return _rootFork(null, null, this, specification, zoneValues);
4829 }
4830 run(f) {
4831 if (core.identical(Zone[_current], _ROOT_ZONE))
4832 return f();
4833 return _rootRun(null, null, this, f);
4834 }
4835 runUnary(f, arg) {
4836 if (core.identical(Zone[_current], _ROOT_ZONE))
4837 return dart.dinvokef(f, arg);
4838 return _rootRunUnary(null, null, this, f, arg);
4839 }
4840 runBinary(f, arg1, arg2) {
4841 if (core.identical(Zone[_current], _ROOT_ZONE))
4842 return dart.dinvokef(f, arg1, arg2);
4843 return _rootRunBinary(null, null, this, f, arg1, arg2);
4844 }
4845 registerCallback(f) {
4846 return f;
4847 }
4848 registerUnaryCallback(f) {
4849 return f;
4850 }
4851 registerBinaryCallback(f) {
4852 return f;
4853 }
4854 errorCallback(error, stackTrace) {
4855 return null;
4856 }
4857 scheduleMicrotask(f) {
4858 _rootScheduleMicrotask(null, null, this, f);
4859 }
4860 createTimer(duration, f) {
4861 return Timer._createTimer(duration, f);
4862 }
4863 createPeriodicTimer(duration, f) {
4864 return Timer._createPeriodicTimer(duration, f);
4865 }
4866 print(line) {
4867 _internal.printToConsole(line);
4868 }
4869 }
4870 _RootZone._rootDelegate = null;
4871 dart.defineLazyProperties(_RootZone, {
4872 get _rootMap() {
4873 return new collection.HashMap();
4874 },
4875 set _rootMap(_) {}
4876 });
4877 let _ROOT_ZONE = new _RootZone();
4878 // Function runZoned: (() → dynamic, {zoneValues: Map<dynamic, dynamic>, zoneS pecification: ZoneSpecification, onError: Function}) → dynamic
4879 function runZoned(body, opt$) {
4880 let zoneValues = opt$.zoneValues === void 0 ? null : opt$.zoneValues;
4881 let zoneSpecification = opt$.zoneSpecification === void 0 ? null : opt$.zone Specification;
4882 let onError = opt$.onError === void 0 ? null : opt$.onError;
4883 let errorHandler = null;
4884 if (onError !== null) {
4885 errorHandler = (self, parent, zone, error, stackTrace) => {
4886 try {
4887 if (dart.is(onError, ZoneBinaryCallback)) {
4888 return self.parent.runBinary(onError, error, stackTrace);
4889 }
4890 return self.parent.runUnary(dart.as(onError, dart.throw_("Unimplemente d type (dynamic) → dynamic")), error);
4891 } catch (e) {
4892 let s = dart.stackTrace(e);
4893 if (core.identical(e, error)) {
4894 return parent.handleUncaughtError(zone, error, stackTrace);
4895 } else {
4896 return parent.handleUncaughtError(zone, e, s);
4897 }
4898 }
4899
4900 };
4901 }
4902 if (zoneSpecification === null) {
4903 zoneSpecification = new ZoneSpecification({handleUncaughtError: errorHandl er});
4904 } else if (errorHandler !== null) {
4905 zoneSpecification = new ZoneSpecification.from(zoneSpecification, {handleU ncaughtError: errorHandler});
4906 }
4907 let zone = Zone.current.fork({specification: zoneSpecification, zoneValues: zoneValues});
4908 if (onError !== null) {
4909 return zone.runGuarded(body);
4910 } else {
4911 return zone.run(body);
4912 }
4913 }
4914 dart.copyProperties(exports, {
4915 get _hasDocument() {
4916 return dart.equals(typeof document, 'object');
4917 }
4918 });
4919 // Exports:
4920 exports.AsyncError = AsyncError;
4921 exports.Stream = Stream;
4922 exports.Stream$ = Stream$;
4923 exports.DeferredLibrary = DeferredLibrary;
4924 exports.DeferredLoadException = DeferredLoadException;
4925 exports.Future = Future;
4926 exports.Future$ = Future$;
4927 exports.TimeoutException = TimeoutException;
4928 exports.Completer = Completer;
4929 exports.Completer$ = Completer$;
4930 exports.scheduleMicrotask = scheduleMicrotask;
4931 exports.StreamSubscription = StreamSubscription;
4932 exports.StreamSubscription$ = StreamSubscription$;
4933 exports.EventSink = EventSink;
4934 exports.EventSink$ = EventSink$;
4935 exports.StreamView = StreamView;
4936 exports.StreamView$ = StreamView$;
4937 exports.StreamConsumer = StreamConsumer;
4938 exports.StreamConsumer$ = StreamConsumer$;
4939 exports.StreamSink = StreamSink;
4940 exports.StreamSink$ = StreamSink$;
4941 exports.StreamTransformer = StreamTransformer;
4942 exports.StreamTransformer$ = StreamTransformer$;
4943 exports.StreamIterator = StreamIterator;
4944 exports.StreamIterator$ = StreamIterator$;
4945 exports.StreamController = StreamController;
4946 exports.StreamController$ = StreamController$;
4947 exports.Timer = Timer;
4948 exports.ZoneSpecification = ZoneSpecification;
4949 exports.ZoneDelegate = ZoneDelegate;
4950 exports.Zone = Zone;
4951 exports.runZoned = runZoned;
4952 })(async || (async = {}));
OLDNEW
« no previous file with comments | « test/codegen/expect/dart/_native_typed_data.js ('k') | test/codegen/expect/dart/collection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698