diff --git a/pkg/dev_compiler/bin/devc.dart b/pkg/dev_compiler/bin/devc.dart index 0e61cead8a00..255a9b936307 100755 --- a/pkg/dev_compiler/bin/devc.dart +++ b/pkg/dev_compiler/bin/devc.dart @@ -34,7 +34,7 @@ void main(List args) { _showUsageAndExit(); } - if (!options.dumpInfo) setupLogger(options.logLevel, print); + setupLogger(options.logLevel, print); if (options.serverMode) { new CompilerServer(options).start(); diff --git a/pkg/dev_compiler/lib/devc.dart b/pkg/dev_compiler/lib/devc.dart index b257410496cc..bfe3d5d43ff0 100644 --- a/pkg/dev_compiler/lib/devc.dart +++ b/pkg/dev_compiler/lib/devc.dart @@ -28,6 +28,7 @@ import 'src/dependency_graph.dart'; import 'src/info.dart' show LibraryInfo, CheckerResults; import 'src/options.dart'; import 'src/report.dart'; +import 'src/utils.dart'; /// Sets up the type checker logger to print a span that highlights error /// messages. @@ -50,6 +51,7 @@ class Compiler { final SourceNode _entryNode; List _libraries = []; final List _generators; + final bool _hashing; bool _failure = false; factory Compiler(CompilerOptions options, @@ -65,7 +67,7 @@ class Compiler { ? new SummaryReporter() : new LogReporter(options.useColors); } - var graph = new SourceGraph(resolver.context, reporter); + var graph = new SourceGraph(resolver.context, reporter, options); var rules = new RestrictedRules(resolver.context.typeProvider, reporter, options: options); var checker = new CodeChecker(rules, reporter, options); @@ -87,11 +89,14 @@ class Compiler { : new JSGenerator(outputDir, entryNode.uri, rules, options)); } return new Compiler._(options, resolver, reporter, rules, checker, graph, - entryNode, generators); + entryNode, generators, + // TODO(sigmund): refactor to support hashing of the dart output? + options.serverMode && generators.length == 1 && !options.outputDart); } Compiler._(this._options, this._resolver, this._reporter, this._rules, - this._checker, this._graph, this._entryNode, this._generators); + this._checker, this._graph, this._entryNode, this._generators, + this._hashing); bool _buildSource(SourceNode node) { if (node is HtmlSourceNode) { @@ -132,10 +137,12 @@ class Compiler { // dev_compiler runtime. if (_options.outputDir == null || _options.outputDart) return; assert(node.uri.scheme == 'package'); - var filepath = path.join(_options.outputDir, node.uri.path); + var filepath = path.join(_options.outputDir, resourceOutputPath(node.uri)); var dir = path.dirname(filepath); new Directory(dir).createSync(recursive: true); - new File(filepath).writeAsStringSync(node.source.contents.data); + var text = node.source.contents.data; + new File(filepath).writeAsStringSync(text); + if (_hashing) node.cachingHash = computeHash(text); } bool _isEntry(DartSourceNode node) { @@ -177,8 +184,10 @@ class Compiler { _failure = true; if (!_options.forceCompile) return; } + for (var cg in _generators) { - cg.generateLibrary(units, current, _reporter); + var hash = cg.generateLibrary(units, current, _reporter); + if (_hashing) node.cachingHash = hash; } _reporter.leaveLibrary(); } @@ -194,10 +203,8 @@ class Compiler { rebuild(_entryNode, _graph, _buildSource); _dumpInfoIfRequested(); clock.stop(); - if (_options.serverMode) { - var time = (clock.elapsedMilliseconds / 1000).toStringAsFixed(2); - print('Compiled ${_libraries.length} libraries in ${time} s\n'); - } + var time = (clock.elapsedMilliseconds / 1000).toStringAsFixed(2); + _log.fine('Compiled ${_libraries.length} libraries in ${time} s\n'); return new CheckerResults( _libraries, _rules, _failure || _options.forceCompile); } @@ -215,7 +222,7 @@ class Compiler { clock.stop(); if (changed > 0) _dumpInfoIfRequested(); var time = (clock.elapsedMilliseconds / 1000).toStringAsFixed(2); - print("Compiled ${changed} libraries in ${time} s\n"); + _log.fine("Compiled ${changed} libraries in ${time} s\n"); } _dumpInfoIfRequested() { @@ -251,7 +258,7 @@ class CompilerServer { exit(1); } var port = options.port; - print('[dev_compiler]: Serving $entryPath at http://0.0.0.0:$port/'); + _log.fine('Serving $entryPath at http://0.0.0.0:$port/'); var compiler = new Compiler(options); return new CompilerServer._(compiler, outDir, port, entryPath); } @@ -260,17 +267,40 @@ class CompilerServer { Future start() async { var handler = const shelf.Pipeline() - .addMiddleware(shelf.createMiddleware(requestHandler: rebuildIfNeeded)) + .addMiddleware(rebuildAndCache) .addHandler(shelf_static.createStaticHandler(outDir, defaultDocument: _entryPath)); await shelf.serve(handler, '0.0.0.0', port); compiler.run(); } - rebuildIfNeeded(shelf.Request request) { - var filepath = request.url.path; - if (filepath == '/$_entryPath' || filepath == '/') compiler._runAgain(); - } + shelf.Handler rebuildAndCache(shelf.Handler handler) => (request) { + _log.fine('requested $GREEN_COLOR${request.url}$NO_COLOR'); + // Trigger recompile only when requesting the HTML page. + var segments = request.url.pathSegments; + bool isEntryPage = segments.length == 0 || segments[0] == _entryPath; + if (isEntryPage) compiler._runAgain(); + + // To help browsers cache resources that don't change, we serve these + // resources under a path containing their hash: + // /cached/{hash}/{path-to-file.js} + bool isCached = segments.length > 1 && segments[0] == 'cached'; + if (isCached) { + // Changing the request lets us record that the hash prefix is handled + // here, and that the underlying handler should use the rest of the url to + // determine where to find the resource in the file system. + request = request.change(path: path.join('cached', segments[1])); + } + var response = handler(request); + var policy = isCached ? 'max-age=${24 * 60 * 60}' : 'no-cache'; + var headers = {'cache-control': policy}; + if (isCached) { + // Note: the cache-control header should be enough, but this doesn't hurt + // and can help renew the policy after it expires. + headers['ETag'] = segments[1]; + } + return response.change(headers: headers); + }; } final _log = new Logger('dev_compiler'); diff --git a/pkg/dev_compiler/lib/src/codegen/code_generator.dart b/pkg/dev_compiler/lib/src/codegen/code_generator.dart index cda50d156e6d..c2920c49d109 100644 --- a/pkg/dev_compiler/lib/src/codegen/code_generator.dart +++ b/pkg/dev_compiler/lib/src/codegen/code_generator.dart @@ -129,6 +129,9 @@ abstract class CodeGenerator { CodeGenerator(String outDir, this.root, this.rules) : outDir = path.absolute(outDir); - void generateLibrary(Iterable units, LibraryInfo info, + /// Return a hash, if any, that can be used for caching purposes. When two + /// invocations to this function return the same hash, the underlying + /// code-generator generated the same code. + String generateLibrary(Iterable units, LibraryInfo info, CheckerReporter reporter); } diff --git a/pkg/dev_compiler/lib/src/codegen/dart_codegen.dart b/pkg/dev_compiler/lib/src/codegen/dart_codegen.dart index 6ddfc64e6762..3fa931bcf087 100644 --- a/pkg/dev_compiler/lib/src/codegen/dart_codegen.dart +++ b/pkg/dev_compiler/lib/src/codegen/dart_codegen.dart @@ -452,13 +452,14 @@ class DartGenerator extends codegenerator.CodeGenerator { libs.forEach(doOne); } - void generateLibrary(Iterable units, LibraryInfo info, + String generateLibrary(Iterable units, LibraryInfo info, CheckerReporter reporter) { _vm = new reifier.VariableManager(); _extraImports = new Set(); _generateLibrary(units, info, reporter); _extraImports = null; _vm = null; + return null; } } @@ -485,7 +486,7 @@ class EmptyDartGenerator extends codegenerator.CodeGenerator { EmptyDartGenerator(String outDir, Uri root, TypeRules rules, this.options) : super(outDir, root, rules); - void generateLibrary(Iterable units, LibraryInfo info, + String generateLibrary(Iterable units, LibraryInfo info, CheckerReporter reporter) { for (var unit in units) { var outputDir = makeOutputDirectory(info, unit); @@ -493,6 +494,7 @@ class EmptyDartGenerator extends codegenerator.CodeGenerator { generateUnit(unit, info, outputDir); reporter.leaveSource(); } + return null; } void generateUnit(CompilationUnit unit, LibraryInfo info, String libraryDir) { diff --git a/pkg/dev_compiler/lib/src/codegen/html_codegen.dart b/pkg/dev_compiler/lib/src/codegen/html_codegen.dart index 80be996f4c77..06fb7c6f43ed 100644 --- a/pkg/dev_compiler/lib/src/codegen/html_codegen.dart +++ b/pkg/dev_compiler/lib/src/codegen/html_codegen.dart @@ -7,10 +7,11 @@ library dev_compiler.src.codegen.html_codegen; import 'package:html5lib/dom.dart'; import 'package:html5lib/parser.dart' show parseFragment; import 'package:logging/logging.dart' show Logger; +import 'package:path/path.dart' as path; import 'package:dev_compiler/src/dependency_graph.dart'; import 'package:dev_compiler/src/options.dart'; -import 'package:dev_compiler/src/utils.dart' show colorOf; +import 'package:dev_compiler/src/utils.dart' show colorOf, resourceOutputPath; import 'js_codegen.dart' show jsLibraryName, jsOutputPath; @@ -42,42 +43,49 @@ String generateEntryHtml(HtmlSourceNode root, CompilerOptions options) { if (options.outputDart) return '${document.outerHtml}\n'; var libraries = []; + var resources = []; visitInPostOrder(root, (n) { if (n is DartSourceNode) libraries.add(n); + if (n is ResourceSourceNode) resources.add(n); }, includeParts: false); String mainLibraryName; - var fragment = _loadRuntimeScripts(options); + var fragment = new DocumentFragment(); + for (var resource in resources) { + var resourcePath = resourceOutputPath(resource.uri); + if (resource.cachingHash != null) { + resourcePath = _addHash(resourcePath, resource.cachingHash); + } + if (path.extension(resourcePath) == '.css') { + fragment.nodes.add(_cssInclude(resourcePath)); + } else { + fragment.nodes.add(_libraryInclude(resourcePath)); + } + } if (!options.checkSdk) fragment.nodes.add(_miniMockSdk); for (var lib in libraries) { var info = lib.info; if (info == null) continue; if (info.isEntry) mainLibraryName = jsLibraryName(info.library); - fragment.nodes.add(_libraryInclude(jsOutputPath(info, root.uri))); + var jsPath = jsOutputPath(info, root.uri); + if (lib.cachingHash != null) { + jsPath = _addHash(jsPath, lib.cachingHash); + } + fragment.nodes.add(_libraryInclude(jsPath)); } fragment.nodes.add(_invokeMain(mainLibraryName)); scripts[0].replaceWith(fragment); return '${document.outerHtml}\n'; } -/// A document fragment with scripts that check for harmony features and that -/// inject our runtime. -Node _loadRuntimeScripts(options) { - // TODO(sigmund): use dev_compiler to generate messages_widget in the future. - var widgetCode = options.serverMode - ? '\n' - '' - : ''; - return parseFragment( - '\n' - '\n' - '$widgetCode'); -} - /// A script tag that loads the .js code for a compiled library. Node _libraryInclude(String jsUrl) => parseFragment('\n'); +/// A tag that loads the .css code. +Node _cssInclude(String cssUrl) => + parseFragment('\n'); + /// A script tag that invokes the main function on the entry point library. Node _invokeMain(String mainLibraryName) { var code = mainLibraryName == null @@ -86,6 +94,13 @@ Node _invokeMain(String mainLibraryName) { return parseFragment('\n'); } +/// Convert the outputPath to include the hash in it. This function is the +/// reverse of what the server does to determine whether a request needs to have +/// cache headers added to it. +_addHash(String outPath, String hash) { + return path.join('cached', hash, outPath); +} + /// A script tag with a tiny mock of the core SDK. This is just used for testing /// some small samples. // TODO(sigmund,jmesserly): remove. diff --git a/pkg/dev_compiler/lib/src/codegen/js_codegen.dart b/pkg/dev_compiler/lib/src/codegen/js_codegen.dart index 028a5152f56f..1c70c19e778f 100644 --- a/pkg/dev_compiler/lib/src/codegen/js_codegen.dart +++ b/pkg/dev_compiler/lib/src/codegen/js_codegen.dart @@ -960,9 +960,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { new JS.VariableDeclaration(last.name.name), _visit(lastInitializer.target))); - var result = [ - new JS.VariableDeclarationList('let', variables) - ]; + var result = + [new JS.VariableDeclarationList('let', variables)]; result.addAll(_visitList(lastInitializer.cascadeSections)); _cascadeTarget = savedCascadeTemp; return _statement(result.map((e) => new JS.ExpressionStatement(e))); @@ -1017,9 +1016,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { void _flushLibraryProperties(List body) { if (_properties.isEmpty) return; - body.add(js.statement('dart.copyProperties($_EXPORTS, { # });', [ - _properties.map(_emitTopLevelProperty) - ])); + body.add(js.statement('dart.copyProperties($_EXPORTS, { # });', + [_properties.map(_emitTopLevelProperty)])); _properties.clear(); } @@ -1609,9 +1607,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { @override visitListLiteral(ListLiteral node) { // TODO(jmesserly): make this faster. We're wasting an array. - var list = js.call('new List.from(#)', [ - new JS.ArrayInitializer(_visitList(node.elements)) - ]); + var list = js.call('new List.from(#)', + [new JS.ArrayInitializer(_visitList(node.elements))]); if (node.constKeyword != null) { list = js.commentExpression('Unimplemented const', list); } @@ -1926,7 +1923,7 @@ class JSGenerator extends CodeGenerator { JSGenerator(String outDir, Uri root, TypeRules rules, this.options) : super(outDir, root, rules); - void generateLibrary(Iterable units, LibraryInfo info, + String generateLibrary(Iterable units, LibraryInfo info, CheckerReporter reporter) { JS.Program jsTree = new JSCodegenVisitor(info, rules).generateLibrary(units, reporter); @@ -1937,14 +1934,19 @@ class JSGenerator extends CodeGenerator { if (options.emitSourceMaps) { var outFilename = path.basename(outputPath); var printer = new srcmaps.Printer(outFilename); - _writeNode(new SourceMapPrintingContext( - printer, path.dirname(outputPath)), jsTree); + _writeNode( + new SourceMapPrintingContext(printer, path.dirname(outputPath)), + jsTree); printer.add('//# sourceMappingURL=$outFilename.map'); // Write output file and source map - new File(outputPath).writeAsStringSync(printer.text); + var text = printer.text; + new File(outputPath).writeAsStringSync(text); new File('$outputPath.map').writeAsStringSync(printer.map); + return computeHash(text); } else { - new File(outputPath).writeAsStringSync(jsNodeToString(jsTree)); + var text = jsNodeToString(jsTree); + new File(outputPath).writeAsStringSync(text); + return computeHash(text); } } } diff --git a/pkg/dev_compiler/lib/src/dependency_graph.dart b/pkg/dev_compiler/lib/src/dependency_graph.dart index 4b2c4c189f07..d7c61199a04f 100644 --- a/pkg/dev_compiler/lib/src/dependency_graph.dart +++ b/pkg/dev_compiler/lib/src/dependency_graph.dart @@ -27,6 +27,7 @@ import 'package:path/path.dart' as path; import 'package:source_span/source_span.dart' show SourceSpan; import 'info.dart'; +import 'options.dart'; import 'report.dart'; import 'utils.dart'; @@ -41,8 +42,9 @@ class SourceGraph { /// Analyzer used to resolve source files. final AnalysisContext _context; final CheckerReporter _reporter; + final CompilerOptions _options; - SourceGraph(this._context, this._reporter); + SourceGraph(this._context, this._reporter, this._options); /// Node associated with a resolved [uri]. SourceNode nodeFromUri(Uri uri) { @@ -75,6 +77,10 @@ abstract class SourceNode { /// Last stamp read from `source.modificationStamp`. int _lastStamp = 0; + /// A hash used to help browsers cache the output that would be produced from + /// building this node. + String cachingHash; + /// Whether we need to rebuild this source file. bool needsRebuild = false; @@ -128,11 +134,13 @@ class HtmlSourceNode extends SourceNode { HtmlSourceNode(uri, source, graph) : super(uri, source) { var prefix = 'package:dev_compiler/runtime'; - runtimeDeps - ..add(graph.nodeFromUri(Uri.parse('$prefix/dart_runtime.js'))) - ..add(graph.nodeFromUri(Uri.parse('$prefix/harmony_feature_check.js'))) - ..add(graph.nodeFromUri(Uri.parse('$prefix/messages_widget.js'))) - ..add(graph.nodeFromUri(Uri.parse('$prefix/messages.css'))); + var files = ['harmony_feature_check.js', 'dart_runtime.js']; + if (graph._options.serverMode) { + files.addAll(const ['messages_widget.js', 'messages.css']); + } + files.forEach((file) { + runtimeDeps.add(graph.nodeFromUri(Uri.parse('$prefix/$file'))); + }); } void update(SourceGraph graph) { @@ -340,20 +348,22 @@ rebuild(SourceNode start, SourceGraph graph, bool build(SourceNode node)) { // of those transitive cases, but is not sufficient. See // https://github.com/dart-lang/dev_compiler/issues/76 var apiChangeDetected = new HashSet(); - bool structureHasChanged = false; + bool htmlNeedsRebuild = false; bool shouldBuildNode(SourceNode n) { if (n.needsRebuild) return true; - if (n is HtmlSourceNode) return structureHasChanged; + if (n is HtmlSourceNode) return htmlNeedsRebuild; if (n is ResourceSourceNode) return false; return (n as DartSourceNode).imports .any((i) => apiChangeDetected.contains(i)); } visitInPostOrder(start, (n) { - if (n.structureChanged) structureHasChanged = true; + if (n.structureChanged) htmlNeedsRebuild = true; if (shouldBuildNode(n)) { + var oldHash = n.cachingHash; if (build(n)) apiChangeDetected.add(n); + if (oldHash != n.cachingHash) htmlNeedsRebuild = true; } else if (n is DartSourceNode && n.exports.any((e) => apiChangeDetected.contains(e))) { apiChangeDetected.add(n); diff --git a/pkg/dev_compiler/lib/src/utils.dart b/pkg/dev_compiler/lib/src/utils.dart index 211a726a6efa..a30473d5290f 100644 --- a/pkg/dev_compiler/lib/src/utils.dart +++ b/pkg/dev_compiler/lib/src/utils.dart @@ -22,6 +22,7 @@ import 'package:analyzer/src/generated/engine.dart' import 'package:analyzer/src/generated/source.dart' show Source; import 'package:analyzer/src/generated/element.dart'; import 'package:analyzer/analyzer.dart' show parseDirectives; +import 'package:crypto/crypto.dart' show CryptoUtils, MD5; import 'package:source_span/source_span.dart'; bool isDartPrivateLibrary(LibraryElement library) { @@ -183,6 +184,8 @@ String colorOf(String levelName) { const String _RED_COLOR = '\u001b[31m'; const String _MAGENTA_COLOR = '\u001b[35m'; const String _CYAN_COLOR = '\u001b[36m'; +const String GREEN_COLOR = '\u001b[32m'; +const String NO_COLOR = '\u001b[0m'; class OutWriter { final String _path; @@ -256,3 +259,11 @@ SourceSpan spanForNode(CompilationUnit unit, Source source, AstNode node) { return new SourceSpan(locationForOffset(unit, uri, begin), locationForOffset(unit, uri, end), '$text'); } + +/// Computes a hash for the given contents. +String computeHash(String contents) { + if (contents == null || contents == '') return null; + return CryptoUtils.bytesToHex((new MD5()..add(contents.codeUnits)).close()); +} + +String resourceOutputPath(Uri resourceUri) => resourceUri.path; diff --git a/pkg/dev_compiler/pubspec.yaml b/pkg/dev_compiler/pubspec.yaml index bf1928a34911..ee8e2eff81cd 100644 --- a/pkg/dev_compiler/pubspec.yaml +++ b/pkg/dev_compiler/pubspec.yaml @@ -7,6 +7,7 @@ dependencies: ref: master args: ^0.12.1 cli_util: ^0.0.1 + crypto: ^0.9.0 dart_style: git: url: git@github.com:dart-lang/dart_style.git @@ -14,7 +15,7 @@ dependencies: html5lib: ^0.12.0 logging: ^0.9.2 path: ^1.3.0 - shelf: ^0.5.7 + shelf: ^0.6.0 shelf_static: ^0.2.1 source_maps: ^0.10.0 source_span: ^1.0.0 diff --git a/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/dart_runtime.js b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/dart_runtime.js new file mode 100644 index 000000000000..041ad24ae10f --- /dev/null +++ b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/dart_runtime.js @@ -0,0 +1,357 @@ +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +var dart; +(function (dart) { + var defineProperty = Object.defineProperty; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var getOwnPropertyNames = Object.getOwnPropertyNames; + + // Adapted from Angular.js + var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m; + var FN_ARG_SPLIT = /,/; + var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/; + var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; + + function formalParameterList(fn) { + var fnText,argDecl; + var args=[]; + fnText = fn.toString().replace(STRIP_COMMENTS, ''); + argDecl = fnText.match(FN_ARGS); + + var r = argDecl[1].split(FN_ARG_SPLIT); + for(var a in r){ + var arg = r[a]; + arg.replace(FN_ARG, function(all, underscore, name){ + args.push(name); + }); + } + return args; + } + + function dload(obj, field) { + if (!(field in obj)) { + throw new core.NoSuchMethodError(obj, field); + } + return obj[field]; + } + dart.dload = dload; + + // TODO(jmesserly): this should call noSuchMethod, not throw. + function throwNoSuchMethod(obj, name, args, opt_func) { + if (obj === void 0) obj = opt_func; + throw new core.NoSuchMethodError(obj, name, args); + } + + function checkAndCall(f, obj, args, name) { + if (!(f instanceof Function)) { + // Grab the `call` method if it's not a function. + if (f !== null) f = f.call; + if (!(f instanceof Function)) { + throwNoSuchMethod(obj, method, args); + } + } + var formals = formalParameterList(f); + // TODO(vsm): Type check args! We need to encode sufficient type info on f. + if (formals.length < args.length) { + throwNoSuchMethod(obj, name, args, f); + } else if (formals.length > args.length) { + for (var i = args.length; i < formals.length; ++i) { + if (formals[i].indexOf("opt$") != 0) { + throwNoSuchMethod(obj, name, args, f); + } + } + } + return f.apply(obj, args); + } + + function dinvokef(f/*, ...args*/) { + var args = Array.prototype.slice.call(arguments, 1); + return checkAndCall(f, void 0, args, 'call'); + } + dart.dinvokef = dinvokef; + + function dinvoke(obj, method/*, ...args*/) { + var args = Array.prototype.slice.call(arguments, 2); + return checkAndCall(obj[method], obj, args, method); + } + dart.dinvoke = dinvoke; + + function dindex(obj, index) { + return checkAndCall(obj.get, obj, [index], '[]'); + } + dart.dindex = dindex; + + function dsetindex(obj, index, value) { + return checkAndCall(obj.set, obj, [index, value], '[]='); + } + dart.dsetindex = dindex; + + function dbinary(left, op, right) { + return checkAndCall(left[op], left, [right], op); + } + dart.dbinary = dbinary; + + function as_(obj, type) { + // TODO(vsm): Implement. + // if (obj == null || is(obj, type)) return obj; + // throw new core.CastError(); + return obj; + } + dart.as = as_; + + function is(obj, type) { + // TODO(vsm): Implement. + throw new core.UnimplementedError(); + } + dart.is = is; + + function isGroundType(type) { + // TODO(vsm): Implement. + throw new core.UnimplementedError(); + } + dart.isGroundType = isGroundType; + + function arity(f) { + // TODO(vsm): Implement. + throw new core.UnimplementedError(); + } + dart.arity = arity; + + function equals(x, y) { + if (x === null || y === null) return x === y; + var eq = x['==']; + return eq ? eq.call(x, y) : x === y; + } + dart.equals = equals; + + /** Checks that `x` is not null or undefined. */ + function notNull(x) { + if (x == null) throw 'expected not-null value'; + return x; + } + dart.notNull = notNull; + + /** + * Defines a lazy property. + * After initial get or set, it will replace itself with a value property. + */ + // TODO(jmesserly): is this the best implementation for JS engines? + // TODO(jmesserly): reusing descriptor objects has been shown to improve + // performance in other projects (e.g. webcomponents.js ShadowDOM polyfill). + function defineLazyProperty(to, name, desc) { + var init = desc.get; + var writable = !!desc.set; + function lazySetter(value) { + defineProperty(to, name, { value: value, writable: writable }); + } + function lazyGetter() { + // Clear the init function to detect circular initialization. + var f = init; + if (f === null) throw 'circular initialization for field ' + name; + init = null; + + // Compute and store the value. + var value = f(); + lazySetter(value); + return value; + } + desc.get = lazyGetter; + desc.configurable = true; + if (writable) desc.set = lazySetter; + defineProperty(to, name, desc); + } + + function defineLazyProperties(to, from) { + var names = getOwnPropertyNames(from); + for (var i = 0; i < names.length; i++) { + var name = names[i]; + defineLazyProperty(to, name, getOwnPropertyDescriptor(from, name)); + } + } + dart.defineLazyProperties = defineLazyProperties; + + /** + * Copy properties from source to destination object. + * This operation is commonly called `mixin` in JS. + */ + function copyProperties(to, from) { + var names = getOwnPropertyNames(from); + for (var i = 0; i < names.length; i++) { + var name = names[i]; + defineProperty(to, name, getOwnPropertyDescriptor(from, name)); + } + return to; + } + dart.copyProperties = copyProperties; + + /** + * Returns a new type that mixes members from base and all mixins. + * + * Each mixin applies in sequence, with further to the right ones overriding + * previous entries. + * + * For each mixin, we only take its own properties, not anything from its + * superclass (prototype). + */ + function mixin(base/*, ...mixins*/) { + // Inherit statics from Base to simulate ES6 class inheritance + // Conceptually this is: `class Mixin extends base {}` + function Mixin() { + // TODO(jmesserly): since we're using initializers and not constructors, + // we can just skip directly to dart.Object. + dart.Object.apply(this, arguments); + } + Mixin.__proto__ = base; + Mixin.prototype = Object.create(base.prototype); + Mixin.prototype.constructor = Mixin; + // Copy each mixin, with later ones overwriting earlier entries. + var mixins = Array.prototype.slice.call(arguments, 1); + for (var i = 0; i < mixins.length; i++) { + copyProperties(Mixin.prototype, mixins[i].prototype); + } + // Create an initializer for the mixin, so when derived constructor calls + // super, we can correctly initialize base and mixins. + var baseCtor = base.prototype[base.name]; + Mixin.prototype[base.name] = function() { + // Run mixin initializers. They cannot have arguments. + // Run them backwards so most-derived mixin is initialized first. + for (var i = mixins.length - 1; i >= 0; i--) { + var mixin = mixins[i]; + mixin.prototype[mixin.name].call(this); + } + // Run base initializer. + baseCtor.apply(this, arguments); + } + return Mixin; + } + dart.mixin = mixin; + + /** + * Creates a dart:collection LinkedHashMap. + * + * For a map with string keys an object literal can be used, for example + * `map({'hi': 1, 'there': 2})`. + * + * Otherwise an array should be used, for example `map([1, 2, 3, 4])` will + * create a map with keys [1, 3] and values [2, 4]. Each key-value pair + * should be adjacent entries in the array. + * + * For a map with no keys the function can be called with no arguments, for + * example `map()`. + */ + // TODO(jmesserly): this could be faster + function map(values) { + var map = new collection.LinkedHashMap(); + if (Array.isArray(values)) { + for (var i = 0, end = values.length - 1; i < end; i += 2) { + var key = values[i]; + var value = values[i + 1]; + map.set(key, value); + } + } else if (typeof values === 'object') { + var keys = Object.getOwnPropertyNames(values); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = values[key]; + map.set(key, value); + } + } + return map; + } + + function assert(condition) { + // TODO(jmesserly): throw assertion error. + if (!condition) throw 'assertion failed'; + } + dart.assert = assert; + + function throw_(obj) { throw obj; } + dart.throw_ = throw_; + + /** + * Given a class and an initializer method name, creates a constructor + * function with the same name. For example `new SomeClass.name(args)`. + */ + function defineNamedConstructor(clazz, name) { + var proto = clazz.prototype; + var initMethod = proto[clazz.name + '$' + name]; + var ctor = function() { return initMethod.apply(this, arguments); } + ctor.prototype = proto; + clazz[name] = ctor; + } + dart.defineNamedConstructor = defineNamedConstructor; + + function stackTrace(exception) { + throw new core.UnimplementedError(); + } + dart.stackTrace = stackTrace; + + /** The Symbol for storing type arguments on a specialized generic type. */ + dart.typeSignature = Symbol('typeSignature'); + + /** Memoize a generic type constructor function. */ + function generic(typeConstructor) { + var length = typeConstructor.length; + if (length < 1) throw 'must have at least one generic type argument'; + + var resultMap = new Map(); + function makeGenericType(/*...arguments*/) { + if (arguments.length != length) { + throw 'requires ' + length + ' type arguments'; + } + + var value = resultMap; + for (var i = 0; i < length; i++) { + var arg = arguments[i]; + // TODO(jmesserly): assume `dynamic` here? + if (arg === void 0) throw 'undefined is not allowed as a type argument'; + + var map = value; + value = map.get(arg); + if (value === void 0) { + if (i + 1 == length) { + value = typeConstructor.apply(null, arguments); + // Save the type constructor and arguments for reflection. + if (value) { + var args = Array.prototype.slice.call(arguments); + value[dart.typeSignature] = [makeGenericType].concat(args); + } + } else { + value = new Map(); + } + map.set(arg, value); + } + } + return value; + } + return makeGenericType; + } + dart.generic = generic; + + + /** + * Implements Dart constructor behavior. Because of V8 `super` [constructor + * restrictions](https://code.google.com/p/v8/issues/detail?id=3330#c65) we + * cannot currently emit actual ES6 constructors with super calls. Instead + * we use the same trick as named constructors, and do them as instance + * methods that perform initialization. + */ + // TODO(jmesserly): we'll need to rethink this once the ES6 spec and V8 + // settles. See . + // Performance of this pattern is likely to be bad. + dart.Object = function Object() { + // Get the class name for this instance. + var name = this.constructor.name; + // Call the default constructor. + var init = this[name]; + var result = void 0; + if (init) result = init.apply(this, arguments); + return result === void 0 ? this : result; + }; + // The initializer for dart.Object + dart.Object.prototype.Object = function() {}; + dart.Object.prototype.constructor = dart.Object; + +})(dart || (dart = {})); diff --git a/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/harmony_feature_check.js b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/harmony_feature_check.js new file mode 100644 index 000000000000..9007bc75d6f8 --- /dev/null +++ b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/harmony_feature_check.js @@ -0,0 +1,28 @@ +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Feature test for harmony support, alert if not present. +(function () { + try { + var f = new Function( + '"use strict";'+ + 'class C {' + + 'constructor(x) { this.x = x; };' + + // TODO(jmesserly): arrow functions on V8 don't have lexical this yet. + // https://code.google.com/p/v8/issues/detail?id=2700 + '["foo"]() { var self = this; return x => self.x + x; };' + + '};' + + 'return new C(42).foo()(100);'); + if (f() == 142) return; // supported! + } catch (e) { + } + + var message = 'This script needs EcmaScript 6 features ' + + 'like `class` and `=>`. Please run in a browser with support, ' + + 'for example: chrome --js-flags="--harmony-arrow-functions' + + ' --harmony-classes --harmony-computed-property-names"'; + console.error(message); + alert(message); + +})(); diff --git a/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages.css b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages.css new file mode 100644 index 000000000000..0f99a9017823 --- /dev/null +++ b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages.css @@ -0,0 +1,78 @@ +/** Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file + for details. All rights reserved. Use of this source code is governed by a + BSD-style license that can be found in the LICENSE file. **/ +.dev-compiler-messages { + position: fixed; + bottom: 0; + right: 0; + max-width: 80vw; + z-index: 10000; + font-family: sans-serif !important; +} +.dev-compiler-messages .message { + padding: 0.6em; + background: black; + color: white; + border: solid 1px #666; + border-bottom: 0px; + text-overflow: ellipsis; + overflow-x: hidden; +} +.dev-compiler-messages .fine { + color: green; +} +.dev-compiler-messages .info { + color: yellow; +} +.dev-compiler-messages .warning { + color: orange; +} +.dev-compiler-messages .severe { + color: red; +} +.dev-compiler-messages div.text { + white-space: nowrap; + cursor: pointer; +} +.dev-compiler-messages div.text.expanded { + white-space: normal; +} +.dev-compiler-messages div.text a { + color: #CCF; + text-decoration: bold; +} +.dev-compiler-messages div.menu { + text-align: right; +} +.dev-compiler-messages .menu div { + display: inline-block; + background: #666; + font-weight: bold; + cursor: pointer; + border: solid 1px black; + padding: 0.6em 1em; +} +.dev-compiler-messages .menu div.active { + background: black; +} +.dev-compiler-messages .menu div .num { + color: white; +} +.dev-compiler-messages .content { + max-height: 75vh; + font-size: 1em; + overflow-y: auto; +} +.dev-compiler-messages .content > div { + display: none; +} +.dev-compiler-messages .content > div.active { + display: block; +} + +.dev-compiler-messages .content span.text { + padding: 0.4em 0.2em 0.2em 2em; + white-space: pre; + display: block; + font-family: monospace !important; +} diff --git a/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages_widget.js b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages_widget.js new file mode 100644 index 000000000000..e8330020774f --- /dev/null +++ b/pkg/dev_compiler/test/codegen/expect/server_mode/dev_compiler/runtime/messages_widget.js @@ -0,0 +1,6377 @@ +// Generated by dart2js, the Dart to JavaScript compiler version: 1.9.0-dev.10.3. +(function($){ +function map(a){a=Object.create(null) +a.x=0 +delete a.x +return a}var A=map() +var B=map() +var C=map() +var D=map() +var E=map() +var F=map() +var G=map() +var H=map() +var J=map() +var K=map() +var L=map() +var M=map() +var N=map() +var O=map() +var P=map() +var Q=map() +var R=map() +var S=map() +var T=map() +var U=map() +var V=map() +var W=map() +var X=map() +var Y=map() +var Z=map() +function I(){} +init() +$=I.p +$.HU=function(){} +function parseReflectionData(a){"use strict" +function generateAccessor(a8,a9,b0){var g=a8.split("-") +var f=g[0] +var e=f.length +var d=f.charCodeAt(e-1) +var c +if(g.length>1)c=true +else c=false +d=d>=60&&d<=64?d-59:d>=123&&d<=126?d-117:d>=37&&d<=43?d-27:0 +if(d){var b=d&3 +var a0=d>>2 +var a1=f=f.substring(0,e-1) +var a2=f.indexOf(":") +if(a2>0){a1=f.substring(0,a2) +f=f.substring(a2+1)}if(b){var a3=b&2?"r":"" +var a4=b&1?"this":"r" +var a5="return "+a4+"."+f +var a6=b0+".prototype.g"+a1+"=" +var a7="function("+a3+"){"+a5+"}" +if(c)a9.push(a6+"$reflectable("+a7+");\n") +else a9.push(a6+a7+";\n")}if(a0){var a3=a0&2?"r,v":"v" +var a4=a0&1?"this":"r" +var a5=a4+"."+f+"=v" +var a6=b0+".prototype.s"+a1+"=" +var a7="function("+a3+"){"+a5+"}" +if(c)a9.push(a6+"$reflectable("+a7+");\n") +else a9.push(a6+a7+";\n")}}return f}function defineClass(a1,a2){var g=[] +var f="function "+a1+"(" +var e="" +var d="" +for(var c=0;c0){var a5=a4.split("+") +a4=a5[0] +var a6=a5[1] +finishClass(a6) +var a7=g[a6] +var a8=a7.prototype +var a9=g[c0].prototype +var b0=Object.keys(a8) +for(var b1=0;b10)b0[f].$reflectable=a0}else if(b==="*"){g[f].$defaultValues=b0[c] +var a1=g.$methodsWithOptionalArguments +if(!a1)g.$methodsWithOptionalArguments=a1={} +a1[c]=f}else{var a2=b0[c] +if(c!=="^"&&a2!=null&&a2.constructor===Array&&c!=="<>")addStubs(g,a2,c,false,b0,[]) +else g[f=c]=a2}}var a3=g["^"],a4,a5,a6=a3 +var a7=a6.split(";") +a6=a7[1]==""?[]:a7[1].split(",") +a5=a7[0] +a4=a5.split(":") +if(a4.length==2){a5=a4[0] +var a8=a4[1] +if(a8)g.$signature=function(b2){return function(){return init.metadata[b2]}}(a8)}if(a5)b1.pending[a9]=a5 +b1.combinedConstructorFunction+=defineClass(a9,a6) +b1.constructorsList.push(a9) +b1.collected[a9]=[m,g] +i.push(a9)}function processStatics(a2,a3){var g=Object.keys(a2) +for(var f=0;f0)a2[b].$reflectable=a0 +if(d&&d.length)init.typeInformation[b]=d}else if(c==="*"){m[b].$defaultValues=d +var a1=a2.$methodsWithOptionalArguments +if(!a1)a2.$methodsWithOptionalArguments=a1={} +a1[e]=b}else if(typeof d==="function"){m[b=e]=d +h.push(e) +init.globalFunctions[e]=d}else if(d.constructor===Array)addStubs(m,d,e,true,a2,h) +else{b=e +processClassData(e,d,a3)}}}function addStubs(b1,b2,b3,b4,b5,b6){var g=0,f=b2[g],e +if(typeof f=="string")e=b2[++g] +else{e=f +f=b3}var d=[b5[b3]=b1[b3]=b1[f]=e] +e.$stubName=b3 +b6.push(b3) +for(;g>1 +var a2=(a0&1)===1 +var a3=a0===3 +var a4=a0===1 +var a5=b2[1] +var a6=a5>>1 +var a7=(a5&1)===1 +var a8=a1+a6!=d[0].length +var a9=b2[2] +var b0=2*a6+a1+3 +if(b){e=tearOff(d,b2,b4,b3,a8) +b1[b3].$getter=e +e.$getterStub=true +if(b4)init.globalFunctions[b3]=e +b5[b]=b1[b]=e +d.push(e) +if(b)b6.push(b) +e.$stubName=b +e.$callName=null}}function tearOffGetter(b,c,d,e){return e?new Function("funcs","reflectionInfo","name","H","c","return function tearOff_"+d+y+++"(x) {"+"if (c === null) c = H.Kq("+"this, funcs, reflectionInfo, false, [x], name);"+"return new c(this, funcs[0], x, name);"+"}")(b,c,d,H,null):new Function("funcs","reflectionInfo","name","H","c","return function tearOff_"+d+y+++"() {"+"if (c === null) c = H.Kq("+"this, funcs, reflectionInfo, false, [], name);"+"return new c(this, funcs[0], null, name);"+"}")(b,c,d,H,null)}function tearOff(b,c,d,e,f){var g +return d?function(){if(g===void 0)g=H.Kq(this,b,c,true,[],e).prototype +return g}:tearOffGetter(b,c,e,f)}var y=0 +if(!init.libraries)init.libraries=[] +if(!init.mangledNames)init.mangledNames=map() +if(!init.mangledGlobalNames)init.mangledGlobalNames=map() +if(!init.statics)init.statics=map() +if(!init.typeInformation)init.typeInformation=map() +if(!init.globalFunctions)init.globalFunctions=map() +var x=init.libraries +var w=init.mangledNames +var v=init.mangledGlobalNames +var u=Object.prototype.hasOwnProperty +var t=a.length +var s=Object.create(null) +s.collected=Object.create(null) +s.pending=Object.create(null) +s.constructorsList=[] +s.combinedConstructorFunction="function $reflectable(fn){fn.$reflectable=1;return fn};\n"+"var $desc;\n" +for(var r=0;r=a.length)throw H.b(P.D(b,null,null)) +this.PP(a,"removeAt") +return a.splice(b,1)[0]}, +aP:function(a,b,c){if(b>a.length)throw H.b(P.D(b,null,null)) +this.PP(a,"insert") +a.splice(b,0,c)}, +UG:function(a,b,c){var z,y +this.PP(a,"insertAll") +P.wA(b,0,a.length,"index",null) +z=c.length +this.sv(a,a.length+z) +y=b+z +this.YW(a,y,a.length,a,b) +this.vg(a,b,y,c)}, +mv:function(a){this.PP(a,"removeLast") +if(a.length===0)throw H.b(P.D(-1,null,null)) +return a.pop()}, +Rz:function(a,b){var z +this.PP(a,"remove") +for(z=0;z=z)return H.e(y,x) +y[x]=w}return y.join(b)}, +Zv:function(a,b){if(b>>>0!==b||b>=a.length)return H.e(a,b) +return a[b]}, +D6:function(a,b,c){if(b<0||b>a.length)throw H.b(P.TE(b,0,a.length,null,null)) +if(ca.length)throw H.b(P.TE(c,b,a.length,null,null)) +if(b===c)return H.J([],[H.Kp(a,0)]) +return H.J(a.slice(b,c),[H.Kp(a,0)])}, +gFV:function(a){if(a.length>0)return a[0] +throw H.b(H.Wp())}, +grZ:function(a){var z=a.length +if(z>0)return a[z-1] +throw H.b(H.Wp())}, +YW:function(a,b,c,d,e){var z,y,x +this.uy(a,"set range") +P.jB(b,c,a.length,null,null,null) +z=c-b +if(z===0)return +if(e<0)H.vh(P.TE(e,0,null,"skipCount",null)) +if(e+z>d.length)throw H.b(H.ar()) +if(e=0;--y){x=e+y +if(x<0||x>=d.length)return H.e(d,x) +a[b+y]=d[x]}else for(y=0;y=d.length)return H.e(d,x) +a[b+y]=d[x]}}, +vg:function(a,b,c,d){return this.YW(a,b,c,d,0)}, +Vr:function(a,b){var z,y +z=a.length +for(y=0;y=a.length||b<0)throw H.b(P.D(b,null,null)) +return a[b]}, +q:function(a,b,c){if(!!a.immutable$list)H.vh(P.f("indexed set")) +if(b>=a.length||b<0)throw H.b(P.D(b,null,null)) +a[b]=c}, +$isDD:1, +$iszM:1, +$aszM:null, +$isqC:1, +static:{Qi:function(a,b){var z +if(typeof a!=="number"||Math.floor(a)!==a||a<0)throw H.b(P.p("Length must be a non-negative integer: "+H.d(a))) +z=H.J(new Array(a),[b]) +z.fixed$length=Array +return z}}}, +F:{ +"^":"Gv;", +JV:function(a,b){return a%b}, +Vy:function(a){return Math.abs(a)}, +yu:function(a){var z +if(a>=-2147483648&&a<=2147483647)return a|0 +if(isFinite(a)){z=a<0?Math.ceil(a):Math.floor(a) +return z+0}throw H.b(P.f(""+a))}, +WZ:function(a,b){var z,y,x,w +H.fI(b) +if(b<2||b>36)throw H.b(P.C3(b)) +z=a.toString(b) +if(C.xB.O2(z,z.length-1)!==41)return z +y=/^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(z) +if(y==null)H.vh(P.f("Unexpected toString result: "+z)) +x=J.U6(y) +z=x.p(y,1) +w=+x.p(y,3) +if(x.p(y,2)!=null){z+=x.p(y,2) +w-=x.p(y,2).length}return z+C.xB.R("0",w)}, +X:function(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +giO:function(a){return a&0x1FFFFFFF}, +G:function(a){return-a}, +g:function(a,b){if(typeof b!=="number")throw H.b(P.p(b)) +return a+b}, +T:function(a,b){if(typeof b!=="number")throw H.b(P.p(b)) +return a-b}, +BU:function(a,b){return(a|0)===a?a/b|0:this.yu(a/b)}, +iK:function(a,b){return b>31?0:a<>>0}, +wG:function(a,b){var z +if(a>0)z=b>31?0:a>>>b +else{z=b>31?31:b +z=a>>z>>>0}return z}, +bf:function(a,b){if(b<0)throw H.b(P.p(b)) +return b>31?0:a>>>b}, +j:function(a,b){if(typeof b!=="number")throw H.b(P.p(b)) +return(a|b)>>>0}, +w:function(a,b){if(typeof b!=="number")throw H.b(P.p(b)) +return ab}, +$islf:1}, +im:{ +"^":"F;", +$islf:1, +$isKN:1}, +VA:{ +"^":"F;", +$islf:1}, +E:{ +"^":"Gv;", +O2:function(a,b){if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(P.p(b)) +if(b<0)throw H.b(P.D(b,null,null)) +if(b>=a.length)throw H.b(P.D(b,null,null)) +return a.charCodeAt(b)}, +ww:function(a,b,c){H.Yx(b) +H.fI(c) +if(c>b.length)throw H.b(P.TE(c,0,b.length,null,null)) +return H.ZT(a,b,c)}, +dd:function(a,b){return this.ww(a,b,0)}, +g:function(a,b){if(typeof b!=="string")throw H.b(P.p(b)) +return a+b}, +Tc:function(a,b){var z,y +H.Yx(b) +z=b.length +y=a.length +if(z>y)return!1 +return b===this.yn(a,y-z)}, +h8:function(a,b,c){H.Yx(c) +return H.ys(a,b,c)}, +nx:function(a,b,c){return H.pu(a,b,c,null)}, +Fr:function(a,b){return a.split(b)}, +Qi:function(a,b,c){var z +H.fI(c) +if(c<0||c>a.length)throw H.b(P.TE(c,0,a.length,null,null)) +z=c+b.length +if(z>a.length)return!1 +return b===a.substring(c,z)}, +nC:function(a,b){return this.Qi(a,b,0)}, +Nj:function(a,b,c){var z +if(typeof b!=="number"||Math.floor(b)!==b)H.vh(P.p(b)) +if(c==null)c=a.length +if(typeof c!=="number"||Math.floor(c)!==c)H.vh(P.p(c)) +z=J.Wx(b) +if(z.w(b,0))throw H.b(P.D(b,null,null)) +if(z.A(b,c))throw H.b(P.D(b,null,null)) +if(J.vU(c,a.length))throw H.b(P.D(c,null,null)) +return a.substring(b,c)}, +yn:function(a,b){return this.Nj(a,b,null)}, +hc:function(a){return a.toLowerCase()}, +bS:function(a){var z,y,x,w,v +z=a.trim() +y=z.length +if(y===0)return z +if(this.O2(z,0)===133){x=J.mm(z,1) +if(x===y)return""}else x=0 +w=y-1 +v=this.O2(z,w)===133?J.r9(z,w):y +if(x===0&&v===y)return z +return z.substring(x,v)}, +R:function(a,b){var z,y +if(typeof b!=="number")return H.o(b) +if(0>=b)return"" +if(b===1||a.length===0)return a +if(b!==b>>>0)throw H.b(C.Eq) +for(z=a,y="";!0;){if((b&1)===1)y=z+y +b=b>>>1 +if(b===0)break +z+=z}return y}, +gNq:function(a){return new H.od(a)}, +XU:function(a,b,c){if(c<0||c>a.length)throw H.b(P.TE(c,0,a.length,null,null)) +return a.indexOf(b,c)}, +OY:function(a,b){return this.XU(a,b,0)}, +Pk:function(a,b,c){var z,y +if(c==null)c=a.length +else if(c<0||c>a.length)throw H.b(P.TE(c,0,a.length,null,null)) +z=b.length +if(typeof c!=="number")return c.g() +y=a.length +if(c+z>y)c=y-z +return a.lastIndexOf(b,c)}, +cn:function(a,b){return this.Pk(a,b,null)}, +eM:function(a,b,c){if(c>a.length)throw H.b(P.TE(c,0,a.length,null,null)) +return H.m2(a,b,c)}, +tg:function(a,b){return this.eM(a,b,0)}, +gl0:function(a){return a.length===0}, +gor:function(a){return a.length!==0}, +X:function(a){return a}, +giO:function(a){var z,y,x +for(z=a.length,y=0,x=0;x>>0) +y^=y>>6}y=536870911&y+((67108863&y)<<3>>>0) +y^=y>>11 +return 536870911&y+((16383&y)<<15>>>0)}, +gv:function(a){return a.length}, +p:function(a,b){if(typeof b!=="number"||Math.floor(b)!==b)throw H.b(P.p(b)) +if(b>=a.length||b<0)throw H.b(P.D(b,null,null)) +return a[b]}, +$isDD:1, +$isI:1, +$isvX:1, +static:{Ga:function(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0 +default:return!1}switch(a){case 5760:case 6158:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0 +default:return!1}},mm:function(a,b){var z,y +for(z=a.length;b0;b=z){z=b-1 +y=C.xB.O2(a,z) +if(y!==32&&y!==13&&!J.Ga(y))break}return b}}}}],["","",,H,{ +"^":"", +zd:function(a,b){var z=a.vV(b) +if(!init.globalState.c.cy)init.globalState.e.bL() +return z}, +ox:function(){--init.globalState.e.a}, +Rq:function(a,b){var z,y,x,w,v,u +z={} +z.a=b +b=b +z.a=b +if(b==null){b=[] +z.a=b +y=b}else y=b +if(!J.t(y).$iszM)throw H.b(P.p("Arguments to main must be a List: "+H.d(y))) +y=new H.O2(0,0,1,null,null,null,null,null,null,null,null,null,a) +y.N8(a) +init.globalState=y +if(init.globalState.r===!0)return +y=init.globalState.Q++ +x=P.L5(null,null,null,P.KN,H.yo) +w=P.Ls(null,null,null,P.KN) +v=new H.yo(0,null,!1) +u=new H.aX(y,x,w,init.createNewIsolate(),v,new H.ku(H.Uh()),new H.ku(H.Uh()),!1,!1,[],P.Ls(null,null,null,null),null,null,!1,!0,P.Ls(null,null,null,null)) +w.h(0,0) +u.ac(0,v) +init.globalState.d=u +init.globalState.c=u +y=H.N7() +x=H.KT(y,[y]).Zg(a) +if(x)u.vV(new H.PK(z,a)) +else{y=H.KT(y,[y,y]).Zg(a) +if(y)u.vV(new H.JO(z,a)) +else u.vV(a)}init.globalState.e.bL()}, +Td:function(){var z=init.currentScript +if(z!=null)return String(z.src) +if(typeof version=="function"&&typeof os=="object"&&"system" in os)return H.mf() +if(typeof version=="function"&&typeof system=="function")return thisFilename() +if(init.globalState.r===!0)return H.mf() +return}, +mf:function(){var z,y +z=new Error().stack +if(z==null){z=function(){try{throw new Error()}catch(x){return x.stack}}() +if(z==null)throw H.b(P.f("No stack trace"))}y=z.match(new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$","m")) +if(y!=null)return y[1] +y=z.match(new RegExp("^[^@]*@(.*):[0-9]*$","m")) +if(y!=null)return y[1] +throw H.b(P.f("Cannot extract URI from \""+H.d(z)+"\""))}, +Mg:function(a,b){var z,y,x,w,v,u,t,s,r,q,p,o,n +z=new H.fP(!0,[]).QS(b.data) +y=J.U6(z) +switch(y.p(z,"command")){case"start":init.globalState.a=y.p(z,"id") +x=y.p(z,"functionName") +w=x==null?init.globalState.cx:H.Cr(x) +v=y.p(z,"args") +u=new H.fP(!0,[]).QS(y.p(z,"msg")) +t=y.p(z,"isSpawnUri") +s=y.p(z,"startPaused") +r=new H.fP(!0,[]).QS(y.p(z,"replyTo")) +y=init.globalState.Q++ +q=P.L5(null,null,null,P.KN,H.yo) +p=P.Ls(null,null,null,P.KN) +o=new H.yo(0,null,!1) +n=new H.aX(y,q,p,init.createNewIsolate(),o,new H.ku(H.Uh()),new H.ku(H.Uh()),!1,!1,[],P.Ls(null,null,null,null),null,null,!1,!0,P.Ls(null,null,null,null)) +p.h(0,0) +n.ac(0,o) +init.globalState.e.Q.B7(new H.IY(n,new H.jl(w,v,u,t,s,r),"worker-start")) +init.globalState.c=n +init.globalState.e.bL() +break +case"spawn-worker":break +case"message":if(y.p(z,"port")!=null)J.jV(y.p(z,"port"),y.p(z,"msg")) +init.globalState.e.bL() +break +case"close":init.globalState.ch.Rz(0,$.p6().p(0,a)) +a.terminate() +init.globalState.e.bL() +break +case"log":H.VL(y.p(z,"msg")) +break +case"print":if(init.globalState.r===!0){y=init.globalState.z +q=P.B(["command","print","msg",z],null,null) +q=new H.jP(!0,P.Q9(null,P.KN)).a3(q) +y.toString +self.postMessage(q)}else P.JS(y.p(z,"msg")) +break +case"error":throw H.b(y.p(z,"msg"))}}, +VL:function(a){var z,y,x,w +if(init.globalState.r===!0){y=init.globalState.z +x=P.B(["command","log","msg",a],null,null) +x=new H.jP(!0,P.Q9(null,P.KN)).a3(x) +y.toString +self.postMessage(x)}else try{self.console.log(a)}catch(w){H.Ru(w) +z=H.ts(w) +throw H.b(P.FM(z))}}, +Cr:function(a){return init.globalFunctions[a]()}, +Z7:function(a,b,c,d,e,f){var z,y,x,w +z=init.globalState.c +y=z.Q +$.te=$.te+("_"+y) +$.eb=$.eb+("_"+y) +y=z.d +x=init.globalState.c.Q +w=z.e +J.jV(f,["spawned",new H.JM(y,x),w,z.f]) +x=new H.vK(a,b,c,d,z) +if(e===!0){z.v8(w,w) +init.globalState.e.Q.B7(new H.IY(z,x,"start isolate"))}else x.$0()}, +Gx:function(a){return new H.fP(!0,[]).QS(new H.jP(!1,P.Q9(null,P.KN)).a3(a))}, +PK:{ +"^":"r:0;Q,a", +$0:function(){this.a.$1(this.Q.a)}}, +JO:{ +"^":"r:0;Q,a", +$0:function(){this.a.$2(this.Q.a,null)}}, +O2:{ +"^":"a;Q,a,b,c,d,e,f,r,x,y,z,ch,cx", +N8:function(a){var z,y,x +z=self.window==null +y=self.Worker +x=z&&!!self.postMessage +this.r=x +if(!x)y=y!=null&&$.Rs()!=null +else y=!0 +this.x=y +this.f=z&&!x +this.e=new H.cC(P.NZ(null,H.IY),0) +this.y=P.L5(null,null,null,P.KN,H.aX) +this.ch=P.L5(null,null,null,P.KN,null) +if(this.r===!0){z=new H.JH() +this.z=z +self.onmessage=function(b,c){return function(d){b(c,d)}}(H.Mg,z) +self.dartPrint=self.dartPrint||function(b){return function(c){if(self.console&&self.console.log)self.console.log(c) +else self.postMessage(b(c))}}(H.wI)}}, +static:{wI:function(a){var z=P.B(["command","print","msg",a],null,null) +return new H.jP(!0,P.Q9(null,P.KN)).a3(z)}}}, +aX:{ +"^":"a;Q,a,b,En:c<,EE:d<,e,f,r,x,y,z,ch,cx,cy,db,dx", +v8:function(a,b){if(!this.e.m(0,a))return +if(this.z.h(0,b)&&!this.x)this.x=!0 +this.Wp()}, +cK:function(a){var z,y,x,w,v,u +if(!this.x)return +z=this.z +z.Rz(0,a) +if(z.Q===0){for(z=this.y;y=z.length,y!==0;){if(0>=y)return H.e(z,0) +x=z.pop() +y=init.globalState.e.Q +w=y.a +v=y.Q +u=v.length +w=(w-1&u-1)>>>0 +y.a=w +if(w<0||w>=u)return H.e(v,w) +v[w]=x +if(w===y.b)y.wL();++y.c}this.x=!1}this.Wp()}, +Ma:function(a){var z=this.ch +if(z==null){z=[] +this.ch=z}if(J.kE(z,a))return +this.ch.push(a)}, +Hh:function(a){var z=this.ch +if(z==null)return +J.V1(z,a)}, +MZ:function(a,b){if(!this.f.m(0,a))return +this.db=b}, +Wq:function(a,b){var z,y +z=J.t(b) +if(!z.m(b,0))y=z.m(b,1)&&!this.cy +else y=!0 +if(y){J.jV(a,null) +return}y=new H.NY(a) +if(z.m(b,2)){init.globalState.e.Q.B7(new H.IY(this,y,"ping")) +return}z=this.cx +if(z==null){z=P.NZ(null,null) +this.cx=z}z.B7(y)}, +bc:function(a,b){var z,y +if(!this.f.m(0,a))return +z=J.t(b) +if(!z.m(b,0))y=z.m(b,1)&&!this.cy +else y=!0 +if(y){this.Dm() +return}if(z.m(b,2)){z=init.globalState.e +y=this.gIm() +z.Q.B7(new H.IY(this,y,"kill")) +return}z=this.cx +if(z==null){z=P.NZ(null,null) +this.cx=z}z.B7(this.gIm())}, +hk:function(a,b){var z,y +z=this.dx +if(z.Q===0){if(this.db===!0&&this===init.globalState.d)return +if(self.console&&self.console.error)self.console.error(a,b) +else{P.JS(a) +if(b!=null)P.JS(b)}return}y=Array(2) +y.fixed$length=Array +y[0]=J.Lz(a) +y[1]=b==null?null:J.Lz(b) +for(z=H.J(new P.zQ(z,z.f,null,null),[null]),z.b=z.Q.d;z.D();)J.jV(z.c,y)}, +vV:function(a){var z,y,x,w,v,u,t +z=init.globalState.c +init.globalState.c=this +$=this.c +y=null +x=this.cy +this.cy=!0 +try{y=a.$0()}catch(u){t=H.Ru(u) +w=t +v=H.ts(u) +this.hk(w,v) +if(this.db===!0){this.Dm() +if(this===init.globalState.d)throw u}}finally{this.cy=x +init.globalState.c=z +if(z!=null)$=z.gEn() +if(this.cx!=null)for(;t=this.cx,!t.gl0(t);)this.cx.Ux().$0()}return y}, +Zt:function(a){return this.a.p(0,a)}, +ac:function(a,b){var z=this.a +if(z.x4(a))throw H.b(P.FM("Registry: ports must be registered only once.")) +z.q(0,a,b)}, +Wp:function(){if(this.a.Q-this.b.Q>0||this.x||!this.r)init.globalState.y.q(0,this.Q,this) +else this.Dm()}, +Dm:[function(){var z,y +z=this.cx +if(z!=null)z.V1(0) +for(z=this.a,y=z.gUQ(z),y=H.J(new H.MH(null,J.Nx(y.Q),y.a),[H.Kp(y,0),H.Kp(y,1)]);y.D();)y.Q.pr() +z.V1(0) +this.b.V1(0) +init.globalState.y.Rz(0,this.Q) +this.dx.V1(0) +z=this.ch +if(z!=null){for(z=H.J(new H.a7(z,z.length,0,null),[H.Kp(z,0)]);z.D();)J.jV(z.c,null) +this.ch=null}},"$0","gIm",0,0,1]}, +NY:{ +"^":"r:1;Q", +$0:function(){J.jV(this.Q,null)}}, +cC:{ +"^":"a;Q,a", +Jc:function(){var z=this.Q +if(z.a===z.b)return +return z.Ux()}, +xB:function(){var z,y,x +z=this.Jc() +if(z==null){if(init.globalState.d!=null&&init.globalState.y.x4(init.globalState.d.Q)&&init.globalState.f===!0&&init.globalState.d.a.Q===0)H.vh(P.FM("Program exited with open ReceivePorts.")) +y=init.globalState +if(y.r===!0&&y.y.Q===0&&y.e.a===0){y=y.z +x=P.B(["command","close"],null,null) +x=new H.jP(!0,P.Q9(null,P.KN)).a3(x) +y.toString +self.postMessage(x)}return!1}z.oH() +return!0}, +Ex:function(){if(self.window!=null)new H.RA(this).$0() +else for(;this.xB(););}, +bL:function(){var z,y,x,w,v +if(init.globalState.r!==!0)this.Ex() +else try{this.Ex()}catch(x){w=H.Ru(x) +z=w +y=H.ts(x) +w=init.globalState.z +v=P.B(["command","error","msg",H.d(z)+"\n"+H.d(y)],null,null) +v=new H.jP(!0,P.Q9(null,P.KN)).a3(v) +w.toString +self.postMessage(v)}}}, +RA:{ +"^":"r:1;Q", +$0:function(){if(!this.Q.xB())return +P.rT(C.RT,this)}}, +IY:{ +"^":"a;Q,a,G1:b>", +oH:function(){var z=this.Q +if(z.x){z.y.push(this) +return}z.vV(this.a)}}, +JH:{ +"^":"a;"}, +jl:{ +"^":"r:0;Q,a,b,c,d,e", +$0:function(){H.Z7(this.Q,this.a,this.b,this.c,this.d,this.e)}}, +vK:{ +"^":"r:1;Q,a,b,c,d", +$0:function(){var z,y,x +this.d.r=!0 +if(this.c!==!0)this.Q.$1(this.b) +else{z=this.Q +y=H.N7() +x=H.KT(y,[y,y]).Zg(z) +if(x)z.$2(this.a,this.b) +else{y=H.KT(y,[y]).Zg(z) +if(y)z.$1(this.a) +else z.$0()}}}}, +Iy:{ +"^":"a;"}, +JM:{ +"^":"Iy;a,Q", +wR:function(a,b){var z,y,x,w +z=init.globalState.y.p(0,this.Q) +if(z==null)return +y=this.a +if(y.gGl())return +x=H.Gx(b) +if(z.gEE()===y){y=J.U6(x) +switch(y.p(x,0)){case"pause":z.v8(y.p(x,1),y.p(x,2)) +break +case"resume":z.cK(y.p(x,1)) +break +case"add-ondone":z.Ma(y.p(x,1)) +break +case"remove-ondone":z.Hh(y.p(x,1)) +break +case"set-errors-fatal":z.MZ(y.p(x,1),y.p(x,2)) +break +case"ping":z.Wq(y.p(x,1),y.p(x,2)) +break +case"kill":z.bc(y.p(x,1),y.p(x,2)) +break +case"getErrors":y=y.p(x,1) +z.dx.h(0,y) +break +case"stopErrors":y=y.p(x,1) +z.dx.Rz(0,y) +break}return}y=init.globalState.e +w="receive "+H.d(b) +y.Q.B7(new H.IY(z,new H.Ua(this,x),w))}, +m:function(a,b){if(b==null)return!1 +return b instanceof H.JM&&J.mG(this.a,b.a)}, +giO:function(a){return this.a.gTU()}}, +Ua:{ +"^":"r:0;Q,a", +$0:function(){var z=this.Q.a +if(!z.gGl())z.FL(this.a)}}, +ns:{ +"^":"Iy;a,b,Q", +wR:function(a,b){var z,y,x +z=P.B(["command","message","port",this,"msg",b],null,null) +y=new H.jP(!0,P.Q9(null,P.KN)).a3(z) +if(init.globalState.r===!0){init.globalState.z.toString +self.postMessage(y)}else{x=init.globalState.ch.p(0,this.a) +if(x!=null)x.postMessage(y)}}, +m:function(a,b){if(b==null)return!1 +return b instanceof H.ns&&J.mG(this.a,b.a)&&J.mG(this.Q,b.Q)&&J.mG(this.b,b.b)}, +giO:function(a){var z,y,x +z=this.a +if(typeof z!=="number")return z.L() +y=this.Q +if(typeof y!=="number")return y.L() +x=this.b +if(typeof x!=="number")return H.o(x) +return(z<<16^y<<8^x)>>>0}}, +yo:{ +"^":"a;TU:Q<,a,Gl:b<", +pr:function(){this.b=!0 +this.a=null}, +FL:function(a){if(this.b)return +this.mY(a)}, +mY:function(a){return this.a.$1(a)}, +$isSF:1}, +yH:{ +"^":"a;Q,a,b", +Qa:function(a,b){var z,y +if(a===0)z=self.setTimeout==null||init.globalState.r===!0 +else z=!1 +if(z){this.b=1 +z=init.globalState.e +y=init.globalState.c +z.Q.B7(new H.IY(y,new H.FA(this,b),"timer")) +this.a=!0}else if(self.setTimeout!=null){++init.globalState.e.a +this.b=self.setTimeout(H.tR(new H.Av(this,b),0),a)}else throw H.b(P.f("Timer greater than 0."))}, +static:{cy:function(a,b){var z=new H.yH(!0,!1,null) +z.Qa(a,b) +return z}}}, +FA:{ +"^":"r:1;Q,a", +$0:function(){this.Q.b=null +this.a.$0()}}, +Av:{ +"^":"r:1;Q,a", +$0:function(){this.Q.b=null +H.ox() +this.a.$0()}}, +ku:{ +"^":"a;TU:Q<", +giO:function(a){var z=this.Q +z=C.jn.wG(z,0)^C.jn.BU(z,4294967296) +z=(~z>>>0)+(z<<15>>>0)&4294967295 +z=((z^z>>>12)>>>0)*5&4294967295 +z=((z^z>>>4)>>>0)*2057&4294967295 +return(z^z>>>16)>>>0}, +m:function(a,b){if(b==null)return!1 +if(b===this)return!0 +if(b instanceof H.ku)return this.Q===b.Q +return!1}}, +jP:{ +"^":"a;Q,a", +a3:[function(a){var z,y,x,w,v +if(a==null||typeof a==="string"||typeof a==="number"||typeof a==="boolean")return a +z=this.a +y=z.p(0,a) +if(y!=null)return["ref",y] +z.q(0,a,z.Q) +z=J.t(a) +if(!!z.$isWZ)return["buffer",a] +if(!!z.$isET)return["typed",a] +if(!!z.$isDD)return this.BE(a) +if(!!z.$isym){x=this.gpC() +w=a.gvc() +w=H.K1(w,x,H.W8(w,"mW",0),null) +w=P.z(w,!0,H.W8(w,"mW",0)) +z=z.gUQ(a) +z=H.K1(z,x,H.W8(z,"mW",0),null) +return["map",w,P.z(z,!0,H.W8(z,"mW",0))]}if(!!z.$isvm)return this.OD(a) +if(!!z.$isGv)this.jf(a) +if(!!z.$isSF)this.kz(a,"RawReceivePorts can't be transmitted:") +if(!!z.$isJM)return this.PE(a) +if(!!z.$isns)return this.ff(a) +if(!!z.$isr){v=a.$name +if(v==null)this.kz(a,"Closures can't be transmitted:") +return["function",v]}return["dart",init.classIdExtractor(a),this.jG(init.classFieldsExtractor(a))]},"$1","gpC",2,0,2], +kz:function(a,b){throw H.b(P.f(H.d(b==null?"Can't transmit:":b)+" "+H.d(a)))}, +jf:function(a){return this.kz(a,null)}, +BE:function(a){var z=this.dY(a) +if(!!a.fixed$length)return["fixed",z] +if(!a.fixed$length)return["extendable",z] +if(!a.immutable$list)return["mutable",z] +if(a.constructor===Array)return["const",z] +this.kz(a,"Can't serialize indexable: ")}, +dY:function(a){var z,y,x +z=[] +C.Nm.sv(z,a.length) +for(y=0;y=z.length)return H.e(z,y) +z[y]=x}return z}, +jG:function(a){var z +for(z=0;z=y.length)return H.e(y,x) +y[x]=w}return["js-object",z,y]}, +ff:function(a){if(this.Q)return["sendport",a.a,a.Q,a.b] +return["raw sendport",a]}, +PE:function(a){if(this.Q)return["sendport",init.globalState.a,a.Q,a.a.gTU()] +return["raw sendport",a]}}, +fP:{ +"^":"a;Q,a", +QS:[function(a){var z,y,x,w,v,u +if(a==null||typeof a==="string"||typeof a==="number"||typeof a==="boolean")return a +if(typeof a!=="object"||a===null||a.constructor!==Array)throw H.b(P.p("Bad serialized message: "+H.d(a))) +switch(C.Nm.gFV(a)){case"ref":if(1>=a.length)return H.e(a,1) +z=a[1] +y=this.a +if(z>>>0!==z||z>=y.length)return H.e(y,z) +return y[z] +case"buffer":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +return x +case"typed":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +return x +case"fixed":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +y=this.NB(x) +y.$builtinTypeInfo=[null] +y.fixed$length=Array +return y +case"extendable":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +y=this.NB(x) +y.$builtinTypeInfo=[null] +return y +case"mutable":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +return this.NB(x) +case"const":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +y=this.NB(x) +y.$builtinTypeInfo=[null] +y.fixed$length=Array +return y +case"map":return this.di(a) +case"sendport":return this.Vf(a) +case"raw sendport":if(1>=a.length)return H.e(a,1) +x=a[1] +this.a.push(x) +return x +case"js-object":return this.ZQ(a) +case"function":if(1>=a.length)return H.e(a,1) +x=init.globalFunctions[a[1]]() +this.a.push(x) +return x +case"dart":y=a.length +if(1>=y)return H.e(a,1) +w=a[1] +if(2>=y)return H.e(a,2) +v=a[2] +u=init.instanceFromClassId(w) +this.a.push(u) +this.NB(v) +return init.initializeEmptyInstance(w,u,v) +default:throw H.b("couldn't deserialize: "+H.d(a))}},"$1","gia",2,0,2], +NB:function(a){var z,y,x +z=J.U6(a) +y=0 +while(!0){x=z.gv(a) +if(typeof x!=="number")return H.o(x) +if(!(y=z)return H.e(a,1) +y=a[1] +if(2>=z)return H.e(a,2) +x=a[2] +w=P.A(null,null) +this.a.push(w) +y=J.kl(y,this.gia()).br(0) +for(z=J.U6(y),v=J.U6(x),u=0;u=y.length)return H.e(y,u) +w.q(0,y[u],this.QS(v.p(x,u)))}return w}, +Vf:function(a){var z,y,x,w,v,u,t +z=a.length +if(1>=z)return H.e(a,1) +y=a[1] +if(2>=z)return H.e(a,2) +x=a[2] +if(3>=z)return H.e(a,3) +w=a[3] +if(J.mG(y,init.globalState.a)){v=init.globalState.y.p(0,x) +if(v==null)return +u=v.Zt(w) +if(u==null)return +t=new H.JM(u,x)}else t=new H.ns(y,w,x) +this.a.push(t) +return t}, +ZQ:function(a){var z,y,x,w,v,u,t +z=a.length +if(1>=z)return H.e(a,1) +y=a[1] +if(2>=z)return H.e(a,2) +x=a[2] +w={} +this.a.push(w) +z=J.U6(y) +v=J.U6(x) +u=0 +while(!0){t=z.gv(y) +if(typeof t!=="number")return H.o(t) +if(!(u=y)return H.e(z,2) +if(z[2]!=null)return parseInt(a,16) +if(3>=y)return H.e(z,3) +if(z[3]!=null)return parseInt(a,10) +return c.$1(a)}b=10}else{if(b<2||b>36)throw H.b(P.C3("Radix "+H.d(b)+" not in range 2..36")) +if(z!=null){if(b===10){if(3>=z.length)return H.e(z,3) +y=z[3]!=null}else y=!1 +if(y)return parseInt(a,10) +if(!(b<10)){if(3>=z.length)return H.e(z,3) +y=z[3]==null}else y=!0 +if(y){x=b<=10?48+b-1:97+b-10-1 +if(1>=z.length)return H.e(z,1) +w=z[1] +y=J.U6(w) +v=0 +while(!0){u=y.gv(w) +if(typeof u!=="number")return H.o(u) +if(!(vx)return c.$1(a);++v}}}}if(z==null)return c.$1(a) +return parseInt(a,b)}, +lh:function(a){var z,y +z=C.w2(J.t(a)) +if(z==="Object"){y=String(a.constructor).match(/^\s*function\s*(\S*)\s*\(/)[1] +if(typeof y==="string")z=/^\w+$/.test(y)?y:z}if(z.length>1&&C.xB.O2(z,0)===36)z=C.xB.yn(z,1) +return(z+H.ia(H.oX(a),0,null)).replace(/[^<,> ]+/g,function(b){return init.mangledGlobalNames[b]||b})}, +a5:function(a){return"Instance of '"+H.lh(a)+"'"}, +M0:function(){if(!!self.location)return self.location.href +return}, +VK:function(a){var z,y,x,w,v +z=a.length +if(z<=500)return String.fromCharCode.apply(null,a) +for(y="",x=0;x65535)return H.Cq(a)}return H.VK(a)}, +Lw:function(a){var z +if(0<=a){if(a<=65535)return String.fromCharCode(a) +if(a<=1114111){z=a-65536 +return String.fromCharCode((55296|C.jn.wG(z,10))>>>0,56320|z&1023)}}throw H.b(P.TE(a,0,1114111,null,null))}, +of:function(a,b){if(a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string")throw H.b(P.p(a)) +return a[b]}, +aw:function(a,b,c){if(a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string")throw H.b(P.p(a)) +a[b]=c}, +o:function(a){throw H.b(P.p(a))}, +e:function(a,b){if(a==null)J.wS(a) +if(typeof b!=="number"||Math.floor(b)!==b)H.o(b) +throw H.b(P.D(b,null,null))}, +fI:function(a){if(typeof a!=="number"||Math.floor(a)!==a)throw H.b(P.p(a)) +return a}, +Yx:function(a){if(typeof a!=="string")throw H.b(P.p(a)) +return a}, +b:function(a){var z +if(a==null)a=new P.LK() +z=new Error() +z.dartException=a +if("defineProperty" in Object){Object.defineProperty(z,"message",{get:H.Ju}) +z.name=""}else z.toString=H.Ju +return z}, +Ju:function(){return J.Lz(this.dartException)}, +vh:function(a){throw H.b(a)}, +Ru:function(a){var z,y,x,w,v,u,t,s,r,q,p,o,n,m +z=new H.Am(a) +if(a==null)return +if(a instanceof H.bq)return z.$1(a.Q) +if(typeof a!=="object")return a +if("dartException" in a)return z.$1(a.dartException) +else if(!("message" in a))return a +y=a.message +if("number" in a&&typeof a.number=="number"){x=a.number +w=x&65535 +if((C.jn.wG(x,16)&8191)===10)switch(w){case 438:return z.$1(H.T3(H.d(y)+" (Error "+w+")",null)) +case 445:case 5007:v=H.d(y)+" (Error "+w+")" +return z.$1(new H.W0(v,null))}}if(a instanceof TypeError){v=$.WD() +u=$.OI() +t=$.PH() +s=$.D1() +r=$.rx() +q=$.Kr() +p=$.zO() +$.Bi() +o=$.eA() +n=$.ko() +m=v.qS(y) +if(m!=null)return z.$1(H.T3(y,m)) +else{m=u.qS(y) +if(m!=null){m.method="call" +return z.$1(H.T3(y,m))}else{m=t.qS(y) +if(m==null){m=s.qS(y) +if(m==null){m=r.qS(y) +if(m==null){m=q.qS(y) +if(m==null){m=p.qS(y) +if(m==null){m=s.qS(y) +if(m==null){m=o.qS(y) +if(m==null){m=n.qS(y) +v=m!=null}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0}else v=!0 +if(v){v=m==null?null:m.method +return z.$1(new H.W0(y,v))}}}v=typeof y==="string"?y:"" +return z.$1(new H.vV(v))}if(a instanceof RangeError){if(typeof y==="string"&&y.indexOf("call stack")!==-1)return new P.VS() +return z.$1(new P.AT(!1,null,null,null))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof y==="string"&&y==="too much recursion")return new P.VS() +return a}, +ts:function(a){if(a instanceof H.bq)return a.a +return new H.XO(a,null)}, +CU:function(a){if(a==null||typeof a!='object')return J.v1(a) +else return H.eQ(a)}, +B7:function(a,b){var z,y,x,w +z=a.length +for(y=0;y=27 +if(v)return H.vq(y,!w,z,b) +if(y===0){w=$.bf +if(w==null){w=H.E2("self") +$.bf=w}w="return function(){return this."+H.d(w)+"."+H.d(z)+"();" +v=$.yj +$.yj=J.WB(v,1) +return new Function(w+H.d(v)+"}")()}u="abcdefghijklmnopqrstuvwxyz".split("").splice(0,y).join(",") +w="return function("+u+"){return this." +v=$.bf +if(v==null){v=H.E2("self") +$.bf=v}v=w+H.d(v)+"."+H.d(z)+"("+u+");" +w=$.yj +$.yj=J.WB(w,1) +return new Function(v+H.d(w)+"}")()}, +Z4:function(a,b,c,d){var z,y +z=H.DV +y=H.HY +switch(b?-1:a){case 0:throw H.b(H.Pa("Intercepted function with no arguments.")) +case 1:return function(e,f,g){return function(){return f(this)[e](g(this))}}(c,z,y) +case 2:return function(e,f,g){return function(h){return f(this)[e](g(this),h)}}(c,z,y) +case 3:return function(e,f,g){return function(h,i){return f(this)[e](g(this),h,i)}}(c,z,y) +case 4:return function(e,f,g){return function(h,i,j){return f(this)[e](g(this),h,i,j)}}(c,z,y) +case 5:return function(e,f,g){return function(h,i,j,k){return f(this)[e](g(this),h,i,j,k)}}(c,z,y) +case 6:return function(e,f,g){return function(h,i,j,k,l){return f(this)[e](g(this),h,i,j,k,l)}}(c,z,y) +default:return function(e,f,g,h){return function(){h=[g(this)] +Array.prototype.push.apply(h,arguments) +return e.apply(f(this),h)}}(d,z,y)}}, +Hf:function(a,b){var z,y,x,w,v,u,t,s +z=H.oN() +y=$.P4 +if(y==null){y=H.E2("receiver") +$.P4=y}x=b.$stubName +w=b.length +v=a[x] +u=b==null?v==null:b===v +t=!u||w>=28 +if(t)return H.Z4(w,!u,x,b) +if(w===1){y="return function(){return this."+H.d(z)+"."+H.d(x)+"(this."+H.d(y)+");" +u=$.yj +$.yj=J.WB(u,1) +return new Function(y+H.d(u)+"}")()}s="abcdefghijklmnopqrstuvwxyz".split("").splice(0,w-1).join(",") +y="return function("+s+"){return this."+H.d(z)+"."+H.d(x)+"(this."+H.d(y)+", "+s+");" +u=$.yj +$.yj=J.WB(u,1) +return new Function(y+H.d(u)+"}")()}, +Kq:function(a,b,c,d,e,f){var z +b.fixed$length=Array +if(!!J.t(c).$iszM){c.fixed$length=Array +z=c}else z=c +return H.iA(a,b,z,!!d,e,f)}, +ag:function(a){throw H.b(new P.t7("Cyclic initialization for static "+H.d(a)))}, +KT:function(a,b,c){return new H.tD(a,b,c,null)}, +N7:function(){return C.KZ}, +Uh:function(){return(Math.random()*0x100000000>>>0)+(Math.random()*0x100000000>>>0)*4294967296}, +U:function(a,b,c){var z +if(b===0){J.xG(c,a) +return}else if(b===1){c.w0(H.Ru(a),H.ts(a)) +return}if(!!J.t(a).$isb8)z=a +else{z=H.J(new P.vs(0,$.X3,null),[null]) +z.Xf(a)}z.Rx(H.BR(b,0),new H.TZ(b)) +return c.gMM()}, +BR:function(a,b){return new H.yS(b,function(c,d){while(true)try{a(c,d) +break}catch(z){d=z +c=1}})}, +J:function(a,b){if(a!=null)a.$builtinTypeInfo=b +return a}, +oX:function(a){if(a==null)return +return a.$builtinTypeInfo}, +IM:function(a,b){return H.Y9(a["$as"+H.d(b)],H.oX(a))}, +W8:function(a,b,c){var z=H.IM(a,b) +return z==null?null:z[c]}, +Kp:function(a,b){var z=H.oX(a) +return z==null?null:z[b]}, +Ko:function(a,b){if(a==null)return"dynamic" +else if(typeof a==="object"&&a!==null&&a.constructor===Array)return a[0].builtin$cls+H.ia(a,1,b) +else if(typeof a=="function")return a.builtin$cls +else if(typeof a==="number"&&Math.floor(a)===a)return C.jn.X(a) +else return}, +ia:function(a,b,c){var z,y,x,w,v,u +if(a==null)return"" +z=new P.Rn("") +for(y=b,x=!0,w=!0,v="";y"}, +dJ:function(a){var z=J.t(a).constructor.builtin$cls +if(a==null)return z +return z+H.ia(a.$builtinTypeInfo,0,null)}, +Y9:function(a,b){if(typeof a=="function"){a=H.ml(a,null,b) +if(a==null||typeof a==="object"&&a!==null&&a.constructor===Array)b=a +else if(typeof a=="function")b=H.ml(a,null,b)}return b}, +hv:function(a,b){var z,y +if(a==null||b==null)return!0 +z=a.length +for(y=0;ys)return!1 +if(t+r":z.$1(a))}, +wz:function(a){return H.eQ(a)}, +bm:function(a,b,c){Object.defineProperty(a,b,{value:c,enumerable:false,writable:true,configurable:true})}, +Y:function(a){var z,y,x,w,v,u +z=$.N.$1(a) +y=$.NF[z] +if(y!=null){Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true}) +return y.i}x=$.vv[z] +if(x!=null)return x +w=init.interceptorsByTag[z] +if(w==null){z=$.TX.$2(a,z) +if(z!=null){y=$.NF[z] +if(y!=null){Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true}) +return y.i}x=$.vv[z] +if(x!=null)return x +w=init.interceptorsByTag[z]}}if(w==null)return +x=w.prototype +v=z[0] +if(v==="!"){y=H.Va(x) +$.NF[z]=y +Object.defineProperty(a,init.dispatchPropertyName,{value:y,enumerable:false,writable:true,configurable:true}) +return y.i}if(v==="~"){$.vv[z]=x +return x}if(v==="-"){u=H.Va(x) +Object.defineProperty(Object.getPrototypeOf(a),init.dispatchPropertyName,{value:u,enumerable:false,writable:true,configurable:true}) +return u.i}if(v==="+")return H.L(a,x) +if(v==="*")throw H.b(P.W(z)) +if(init.leafTags[z]===true){u=H.Va(x) +Object.defineProperty(Object.getPrototypeOf(a),init.dispatchPropertyName,{value:u,enumerable:false,writable:true,configurable:true}) +return u.i}else return H.L(a,x)}, +L:function(a,b){var z=Object.getPrototypeOf(a) +Object.defineProperty(z,init.dispatchPropertyName,{value:J.Q(b,z,null,null),enumerable:false,writable:true,configurable:true}) +return b}, +Va:function(a){return J.Q(a,!1,null,!!a.$isXj)}, +VF:function(a,b,c){var z=b.prototype +if(init.leafTags[a]===true)return J.Q(z,!1,null,!!z.$isXj) +else return J.Q(z,c,null,null)}, +O:function(){if(!0===$.P)return +$.P=!0 +H.Z1()}, +Z1:function(){var z,y,x,w,v,u,t,s +$.NF=Object.create(null) +$.vv=Object.create(null) +H.kO() +z=init.interceptorsByTag +y=Object.getOwnPropertyNames(z) +if(typeof window!="undefined"){window +x=function(){} +for(w=0;w=v.length)return H.e(v,0) +v=J.wS(v[0]) +if(typeof v!=="number")return H.o(v) +x=u+v}z=y.Q+=H.d(d.$1(C.xB.yn(a,x))) +return z.charCodeAt(0)==0?z:z}, +bR:function(a,b,c,d){var z=C.xB.XU(a,b,d) +if(z<0)return a +return H.wC(a,z,z+b.length,c)}, +wC:function(a,b,c,d){var z,y +z=a.substring(0,b) +y=a.substring(c) +return z+d+y}, +FD:{ +"^":"a;Q,a,b,c,d,e,f,r", +static:{zh:function(a){var z,y,x +z=a.$reflectionInfo +if(z==null)return +z.fixed$length=Array +z=z +y=z[0] +x=z[1] +return new H.FD(a,z,(y&1)===1,y>>1,x>>1,(x&1)===1,z[2],null)}}}, +Zr:{ +"^":"a;Q,a,b,c,d,e", +qS:function(a){var z,y,x +z=new RegExp(this.Q).exec(a) +if(z==null)return +y=Object.create(null) +x=this.a +if(x!==-1)y.arguments=z[x+1] +x=this.b +if(x!==-1)y.argumentsExpr=z[x+1] +x=this.c +if(x!==-1)y.expr=z[x+1] +x=this.d +if(x!==-1)y.method=z[x+1] +x=this.e +if(x!==-1)y.receiver=z[x+1] +return y}, +static:{cM:function(a){var z,y,x,w,v,u +a=a.replace(String({}),'$receiver$').replace(new RegExp("[[\\]{}()*+?.\\\\^$|]",'g'),'\\$&') +z=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(z==null)z=[] +y=z.indexOf("\\$arguments\\$") +x=z.indexOf("\\$argumentsExpr\\$") +w=z.indexOf("\\$expr\\$") +v=z.indexOf("\\$method\\$") +u=z.indexOf("\\$receiver\\$") +return new H.Zr(a.replace('\\$arguments\\$','((?:x|[^x])*)').replace('\\$argumentsExpr\\$','((?:x|[^x])*)').replace('\\$expr\\$','((?:x|[^x])*)').replace('\\$method\\$','((?:x|[^x])*)').replace('\\$receiver\\$','((?:x|[^x])*)'),y,x,w,v,u)},S7:function(a){return function($expr$){var $argumentsExpr$='$arguments$' +try{$expr$.$method$($argumentsExpr$)}catch(z){return z.message}}(a)},Mj:function(a){return function($expr$){try{$expr$.$method$}catch(z){return z.message}}(a)}}}, +W0:{ +"^":"Ge;Q,a", +X:function(a){var z=this.a +if(z==null)return"NullError: "+H.d(this.Q) +return"NullError: Cannot call \""+H.d(z)+"\" on null"}}, +az:{ +"^":"Ge;Q,a,b", +X:function(a){var z,y +z=this.a +if(z==null)return"NoSuchMethodError: "+H.d(this.Q) +y=this.b +if(y==null)return"NoSuchMethodError: Cannot call \""+H.d(z)+"\" ("+H.d(this.Q)+")" +return"NoSuchMethodError: Cannot call \""+H.d(z)+"\" on \""+H.d(y)+"\" ("+H.d(this.Q)+")"}, +static:{T3:function(a,b){var z,y +z=b==null +y=z?null:b.method +z=z?null:b.receiver +return new H.az(a,y,z)}}}, +vV:{ +"^":"Ge;Q", +X:function(a){var z=this.Q +return C.xB.gl0(z)?"Error":"Error: "+z}}, +Am:{ +"^":"r:2;Q", +$1:function(a){if(!!J.t(a).$isGe)if(a.$thrownJsError==null)a.$thrownJsError=this.Q +return a}}, +XO:{ +"^":"a;Q,a", +X:function(a){var z,y +z=this.a +if(z!=null)return z +z=this.Q +y=z!==null&&typeof z==="object"?z.stack:null +z=y==null?"":y +this.a=z +return z}}, +dr:{ +"^":"r:0;Q", +$0:function(){return this.Q.$0()}}, +TL:{ +"^":"r:0;Q,a", +$0:function(){return this.Q.$1(this.a)}}, +KX:{ +"^":"r:0;Q,a,b", +$0:function(){return this.Q.$2(this.a,this.b)}}, +uZ:{ +"^":"r:0;Q,a,b,c", +$0:function(){return this.Q.$3(this.a,this.b,this.c)}}, +OQ:{ +"^":"r:0;Q,a,b,c,d", +$0:function(){return this.Q.$4(this.a,this.b,this.c,this.d)}}, +r:{ +"^":"a;", +X:function(a){return"Closure"}, +gKu:function(){return this}, +gKu:function(){return this}}, +Bp:{ +"^":"r;"}, +q:{ +"^":"Bp;Q,a,b,c", +m:function(a,b){if(b==null)return!1 +if(this===b)return!0 +if(!(b instanceof H.q))return!1 +return this.Q===b.Q&&this.a===b.a&&this.b===b.b}, +giO:function(a){var z,y +z=this.b +if(z==null)y=H.eQ(this.Q) +else y=typeof z!=="object"?J.v1(z):H.eQ(z) +return(y^H.eQ(this.a))>>>0}, +static:{DV:function(a){return a.Q},HY:function(a){return a.b},oN:function(){var z=$.bf +if(z==null){z=H.E2("self") +$.bf=z}return z},E2:function(a){var z,y,x,w,v +z=new H.q("self","target","receiver","name") +y=Object.getOwnPropertyNames(z) +y.fixed$length=Array +x=y +for(y=x.length,w=0;w", +X:function(a){return"RuntimeError: "+this.Q}, +static:{Pa:function(a){return new H.mh(a)}}}, +lb:{ +"^":"a;"}, +tD:{ +"^":"lb;Q,a,b,c", +Zg:function(a){var z=this.LC(a) +return z==null?!1:H.Ly(z,this.za())}, +LC:function(a){var z=J.t(a) +return"$signature" in z?z.$signature():null}, +za:function(){var z,y,x,w,v,u,t +z={func:"dynafunc"} +y=this.Q +x=J.t(y) +if(!!x.$isnr)z.void=true +else if(!x.$ishJ)z.ret=y.za() +y=this.a +if(y!=null&&y.length!==0)z.args=H.Dz(y) +y=this.b +if(y!=null&&y.length!==0)z.opt=H.Dz(y) +y=this.c +if(y!=null){w=Object.create(null) +v=H.kU(y) +for(x=v.length,u=0;u "+H.d(this.Q))}, +static:{Dz:function(a){var z,y,x +a=a +z=[] +for(y=a.length,x=0;x ]+/g,function(b){return init.mangledGlobalNames[b]||b}) +this.a=y +return y}, +giO:function(a){return J.v1(this.Q)}, +m:function(a,b){if(b==null)return!1 +return b instanceof H.cu&&J.mG(this.Q,b.Q)}}, +N5:{ +"^":"a;Q,a,b,c,d,e,f", +gv:function(a){return this.Q}, +gl0:function(a){return this.Q===0}, +gor:function(a){return this.Q!==0}, +gvc:function(){return H.J(new H.i5(this),[H.Kp(this,0)])}, +gUQ:function(a){return H.K1(H.J(new H.i5(this),[H.Kp(this,0)]),new H.mJ(this),H.Kp(this,0),H.Kp(this,1))}, +x4:function(a){var z,y +if(typeof a==="string"&&a!=="__proto__"){z=this.a +if(z==null)return!1 +return z[a]!=null}else if(typeof a==="number"&&(a&0x3ffffff)===a){y=this.b +if(y==null)return!1 +return y[a]!=null}else return this.CX(a)}, +CX:function(a){var z=this.c +if(z==null)return!1 +return this.Fh(z[this.dk(a)],a)>=0}, +p:function(a,b){var z,y,x +if(typeof b==="string"&&b!=="__proto__"){z=this.a +if(z==null)return +y=z[b] +return y==null?null:y.gLk()}else if(typeof b==="number"&&(b&0x3ffffff)===b){x=this.b +if(x==null)return +y=x[b] +return y==null?null:y.gLk()}else return this.aa(b)}, +aa:function(a){var z,y,x +z=this.c +if(z==null)return +y=z[this.dk(a)] +x=this.Fh(y,a) +if(x<0)return +return y[x].gLk()}, +q:function(a,b,c){var z,y +if(typeof b==="string"&&b!=="__proto__"){z=this.a +if(z==null){z=H.QE() +this.a=z}this.ti(z,b,c)}else if(typeof b==="number"&&(b&0x3ffffff)===b){y=this.b +if(y==null){y=H.QE() +this.b=y}this.ti(y,b,c)}else this.xw(b,c)}, +xw:function(a,b){var z,y,x,w +z=this.c +if(z==null){z=H.QE() +this.c=z}y=this.dk(a) +x=z[y] +if(x==null)z[y]=[this.y4(a,b)] +else{w=this.Fh(x,a) +if(w>=0)x[w].sLk(b) +else x.push(this.y4(a,b))}}, +to:function(a,b){var z +if(this.x4(a))return this.p(0,a) +z=b.$0() +this.q(0,a,z) +return z}, +Rz:function(a,b){if(typeof b==="string"&&b!=="__proto__")return this.TR(this.a,b) +else if(typeof b==="number"&&(b&0x3ffffff)===b)return this.TR(this.b,b) +else return this.WM(b)}, +WM:function(a){var z,y,x,w +z=this.c +if(z==null)return +y=z[this.dk(a)] +x=this.Fh(y,a) +if(x<0)return +w=y.splice(x,1)[0] +this.VU(w) +return w.gLk()}, +V1:function(a){if(this.Q>0){this.e=null +this.d=null +this.c=null +this.b=null +this.a=null +this.Q=0 +this.f=this.f+1&67108863}}, +aN:function(a,b){var z,y +z=this.d +y=this.f +for(;z!=null;){b.$2(z.Q,z.a) +if(y!==this.f)throw H.b(P.a4(this)) +z=z.b}}, +ti:function(a,b,c){var z=a[b] +if(z==null)a[b]=this.y4(b,c) +else z.sLk(c)}, +TR:function(a,b){var z +if(a==null)return +z=a[b] +if(z==null)return +this.VU(z) +delete a[b] +return z.gLk()}, +y4:function(a,b){var z,y +z=new H.db(a,b,null,null) +if(this.d==null){this.e=z +this.d=z}else{y=this.e +z.c=y +y.b=z +this.e=z}++this.Q +this.f=this.f+1&67108863 +return z}, +VU:function(a){var z,y +z=a.gGq() +y=a.b +if(z==null)this.d=y +else z.b=y +if(y==null)this.e=z +else y.c=z;--this.Q +this.f=this.f+1&67108863}, +dk:function(a){return J.v1(a)&0x3ffffff}, +Fh:function(a,b){var z,y +if(a==null)return-1 +z=a.length +for(y=0;y"]=z +delete z[""] +return z}}}, +mJ:{ +"^":"r:2;Q", +$1:function(a){return this.Q.p(0,a)}}, +db:{ +"^":"a;yK:Q<,Lk:a@,b,Gq:c<"}, +i5:{ +"^":"mW;Q", +gv:function(a){return this.Q.Q}, +gl0:function(a){return this.Q.Q===0}, +gu:function(a){var z,y +z=this.Q +y=new H.N6(z,z.f,null,null) +y.$builtinTypeInfo=this.$builtinTypeInfo +y.b=z.d +return y}, +tg:function(a,b){return this.Q.x4(b)}, +aN:function(a,b){var z,y,x +z=this.Q +y=z.d +x=z.f +for(;y!=null;){b.$1(y.Q) +if(x!==z.f)throw H.b(P.a4(z)) +y=y.b}}, +$isqC:1}, +N6:{ +"^":"a;Q,a,b,c", +gk:function(){return this.c}, +D:function(){var z=this.Q +if(this.a!==z.f)throw H.b(P.a4(z)) +else{z=this.b +if(z==null){this.c=null +return!1}else{this.c=z.Q +this.b=z.b +return!0}}}}, +dC:{ +"^":"r:2;Q", +$1:function(a){return this.Q(a)}}, +wN:{ +"^":"r:4;Q", +$2:function(a,b){return this.Q(a,b)}}, +VX:{ +"^":"r:5;Q", +$1:function(a){return this.Q(a)}}, +VR:{ +"^":"a;Q,a,b,c", +X:function(a){return"RegExp/"+this.Q+"/"}, +gHc:function(){var z=this.b +if(z!=null)return z +z=this.a +z=H.v4(this.Q,z.multiline,!z.ignoreCase,!0) +this.b=z +return z}, +ww:function(a,b,c){H.Yx(b) +H.fI(c) +if(c>b.length)throw H.b(P.TE(c,0,b.length,null,null)) +return new H.KW(this,b,c)}, +dd:function(a,b){return this.ww(a,b,0)}, +UZ:function(a,b){var z,y +z=this.gHc() +z.lastIndex=b +y=z.exec(a) +if(y==null)return +return H.yx(this,y)}, +$isvX:1, +static:{v4:function(a,b,c,d){var z,y,x,w,v +H.Yx(a) +z=b?"m":"" +y=c?"":"i" +x=d?"g":"" +w=function(){try{return new RegExp(a,z+y+x)}catch(u){return u}}() +if(w instanceof RegExp)return w +v=String(w) +throw H.b(P.cD("Illegal RegExp pattern: "+a+", "+v,null,null))}}}, +EK:{ +"^":"a;Q,a", +Fk:function(a){var z=this.a +if(a>>>0!==a||a>=z.length)return H.e(z,a) +return z[a]}, +p:function(a,b){var z=this.a +if(b>>>0!==b||b>=z.length)return H.e(z,b) +return z[b]}, +NE:function(a,b){}, +static:{yx:function(a,b){var z=new H.EK(a,b) +z.NE(a,b) +return z}}}, +KW:{ +"^":"mW;Q,a,b", +gu:function(a){return new H.Pb(this.Q,this.a,this.b,null)}, +$asmW:function(){return[P.Od]}}, +Pb:{ +"^":"a;Q,a,b,c", +gk:function(){return this.c}, +D:function(){var z,y,x,w,v +z=this.a +if(z==null)return!1 +y=this.b +if(y<=z.length){x=this.Q.UZ(z,y) +if(x!=null){this.c=x +z=x.a +y=z.index +if(0>=z.length)return H.e(z,0) +w=J.wS(z[0]) +if(typeof w!=="number")return H.o(w) +v=y+w +this.b=z.index===v?v+1:v +return!0}}this.c=null +this.a=null +return!1}}, +tQ:{ +"^":"a;Q,a,b", +p:function(a,b){return this.Fk(b)}, +Fk:function(a){if(a!==0)throw H.b(P.D(a,null,null)) +return this.b}}}],["","",,H,{ +"^":"", +Wp:function(){return new P.lj("No element")}, +dU:function(){return new P.lj("Too many elements")}, +ar:function(){return new P.lj("Too few elements")}, +Fv:function(a){return a.gOB()}, +od:{ +"^":"Gq;Q", +gv:function(a){return this.Q.length}, +p:function(a,b){return C.xB.O2(this.Q,b)}, +$asGq:function(){return[P.KN]}, +$asLU:function(){return[P.KN]}, +$asE9:function(){return[P.KN]}, +$aszM:function(){return[P.KN]}}, +aL:{ +"^":"mW;", +gu:function(a){return H.J(new H.a7(this,this.gv(this),0,null),[H.W8(this,"aL",0)])}, +aN:function(a,b){var z,y +z=this.gv(this) +for(y=0;y=z.length)return H.e(z,y) +z[y]=x}return z}, +br:function(a){return this.tt(a,!0)}, +$isqC:1}, +bX:{ +"^":"aL;Q,a,b", +gUD:function(){var z,y,x +z=J.wS(this.Q) +y=this.b +if(y!=null){if(typeof y!=="number")return y.A() +x=y>z}else x=!0 +if(x)return z +return y}, +gAs:function(){var z,y +z=J.wS(this.Q) +y=this.a +if(y>z)return z +return y}, +gv:function(a){var z,y,x,w +z=J.wS(this.Q) +y=this.a +if(y>=z)return 0 +x=this.b +if(x!=null){if(typeof x!=="number")return x.C() +w=x>=z}else w=!0 +if(w)return z-y +if(typeof x!=="number")return x.T() +return x-y}, +Zv:function(a,b){var z,y +z=this.gAs()+b +if(b>=0){y=this.gUD() +if(typeof y!=="number")return H.o(y) +y=z>=y}else y=!0 +if(y)throw H.b(P.Cf(b,this,"index",null,null)) +return J.i9(this.Q,z)}}, +a7:{ +"^":"a;Q,a,b,c", +gk:function(){return this.c}, +D:function(){var z,y,x,w +z=this.Q +y=J.U6(z) +x=y.gv(z) +if(this.a!==x)throw H.b(P.a4(z)) +w=this.b +if(w>=x){this.c=null +return!1}this.c=y.Zv(z,w);++this.b +return!0}}, +i1:{ +"^":"mW;Q,a", +gu:function(a){var z=new H.MH(null,J.Nx(this.Q),this.a) +z.$builtinTypeInfo=this.$builtinTypeInfo +return z}, +gv:function(a){return J.wS(this.Q)}, +gl0:function(a){return J.FN(this.Q)}, +grZ:function(a){return this.Mi(J.MQ(this.Q))}, +Mi:function(a){return this.a.$1(a)}, +$asmW:function(a,b){return[b]}, +static:{K1:function(a,b,c,d){if(!!J.t(a).$isqC)return H.J(new H.xy(a,b),[c,d]) +return H.J(new H.i1(a,b),[c,d])}}}, +xy:{ +"^":"i1;Q,a", +$isqC:1}, +MH:{ +"^":"An;Q,a,b", +D:function(){var z=this.a +if(z.D()){this.Q=this.Mi(z.gk()) +return!0}this.Q=null +return!1}, +gk:function(){return this.Q}, +Mi:function(a){return this.b.$1(a)}, +$asAn:function(a,b){return[b]}}, +A8:{ +"^":"aL;Q,a", +gv:function(a){return J.wS(this.Q)}, +Zv:function(a,b){return this.Mi(J.i9(this.Q,b))}, +Mi:function(a){return this.a.$1(a)}, +$asaL:function(a,b){return[b]}, +$asmW:function(a,b){return[b]}, +$isqC:1}, +U5:{ +"^":"mW;Q,a", +gu:function(a){var z=new H.SO(J.Nx(this.Q),this.a) +z.$builtinTypeInfo=this.$builtinTypeInfo +return z}}, +SO:{ +"^":"An;Q,a", +D:function(){for(var z=this.Q;z.D();)if(this.Mi(z.gk())===!0)return!0 +return!1}, +gk:function(){return this.Q.gk()}, +Mi:function(a){return this.a.$1(a)}}, +SU:{ +"^":"a;", +sv:function(a,b){throw H.b(P.f("Cannot change the length of a fixed-length list"))}, +h:function(a,b){throw H.b(P.f("Cannot add to a fixed-length list"))}}, +Ja:{ +"^":"a;", +q:function(a,b,c){throw H.b(P.f("Cannot modify an unmodifiable list"))}, +sv:function(a,b){throw H.b(P.f("Cannot change the length of an unmodifiable list"))}, +h:function(a,b){throw H.b(P.f("Cannot add to an unmodifiable list"))}, +$iszM:1, +$aszM:null, +$isqC:1}, +Gq:{ +"^":"LU+Ja;", +$iszM:1, +$aszM:null, +$isqC:1}}],["","",,H,{ +"^":"", +kU:function(a){var z=H.J(a?Object.keys(a):[],[null]) +z.fixed$length=Array +return z}}],["","",,P,{ +"^":"", +xg:function(){var z,y,x +z={} +if(self.scheduleImmediate!=null)return P.Sx() +if(self.MutationObserver!=null&&self.document!=null){y=self.document.createElement("div") +x=self.document.createElement("span") +z.a=null +new self.MutationObserver(H.tR(new P.th(z),1)).observe(y,{childList:true}) +return new P.ha(z,y,x)}else if(self.setImmediate!=null)return P.q9() +return P.K7()}, +ZV:[function(a){++init.globalState.e.a +self.scheduleImmediate(H.tR(new P.C6(a),0))},"$1","Sx",2,0,28], +oA:[function(a){++init.globalState.e.a +self.setImmediate(H.tR(new P.Ft(a),0))},"$1","q9",2,0,28], +Bz:[function(a){P.YF(C.RT,a)},"$1","K7",2,0,28], +VH:function(a,b){var z=H.N7() +z=H.KT(z,[z,z]).Zg(a) +if(z){b.toString +return a}else{b.toString +return a}}, +Z:function(a){return H.J(new P.Zf(H.J(new P.vs(0,$.X3,null),[a])),[a])}, +nD:function(a,b,c){$.X3.toString +a.ZL(b,c)}, +Cx:function(){var z,y +for(;z=$.S6,z!=null;){$.mg=null +y=z.a +$.S6=y +if(y==null)$.k8=null +z.Ki()}}, +BG:[function(){$.UD=!0 +try{P.Cx()}finally{$.mg=null +$.UD=!1 +if($.S6!=null)$.ej().$1(P.qZ())}},"$0","qZ",0,0,1], +IA:function(a){var z,y +if($.S6==null){z=new P.OM(a,null) +$.k8=z +$.S6=z +if(!$.UD)$.ej().$1(P.qZ())}else{y=new P.OM(a,null) +$.k8.a=y +$.k8=y}}, +rb:function(a){var z=$.X3 +if(C.NU===z){P.Tk(null,null,C.NU,a) +return}P.Tk(null,null,z,z.xi(a,!0))}, +Qw:function(a,b){var z=H.J(new P.dF(null,null,null,0),[b]) +z.td(a,b) +return z}, +YE:[function(a){},"$1","Gi",2,0,29], +Z0:[function(a,b){var z=$.X3 +z.toString +P.L2(null,null,z,a,b)},function(a){return P.Z0(a,null)},null,"$2","$1","SD",2,2,8,38], +dL:[function(){},"$0","v3",0,0,1], +FE:function(a,b,c){var z,y,x,w,v,u,t +try{b.$1(a.$0())}catch(u){t=H.Ru(u) +z=t +y=H.ts(u) +$.X3.toString +x=null +if(x==null)c.$2(z,y) +else{t=J.w8(x) +w=t +v=x.gI4() +c.$2(w,v)}}}, +NX:function(a,b,c,d){var z=a.Gv() +if(!!J.t(z).$isb8)z.wM(new P.dR(b,c,d)) +else b.ZL(c,d)}, +TB:function(a,b){return new P.uR(a,b)}, +Bb:function(a,b,c){var z=a.Gv() +if(!!J.t(z).$isb8)z.wM(new P.QX(b,c)) +else b.HH(c)}, +iw:function(a,b,c){$.X3.toString +a.UI(b,c)}, +rT:function(a,b){var z=$.X3 +if(z===C.NU){z.toString +return P.YF(a,b)}return P.YF(a,z.xi(b,!0))}, +YF:function(a,b){var z=C.jn.BU(a.Q,1000) +return H.cy(z<0?0:z,b)}, +PJ:function(a){var z=$.X3 +$.X3=a +return z}, +L2:function(a,b,c,d,e){var z,y,x +z=new P.pK(d,e) +y=new P.OM(z,null) +x=$.S6 +if(x==null){P.IA(z) +$.mg=$.k8}else{z=$.mg +if(z==null){y.a=x +$.mg=y +$.S6=y}else{y.a=z.a +z.a=y +$.mg=y +if(y.a==null)$.k8=y}}}, +T8:function(a,b,c,d){var z,y +if($.X3===c)return d.$0() +z=P.PJ(c) +try{y=d.$0() +return y}finally{$.X3=z}}, +yv:function(a,b,c,d,e){var z,y +if($.X3===c)return d.$1(e) +z=P.PJ(c) +try{y=d.$1(e) +return y}finally{$.X3=z}}, +Qx:function(a,b,c,d,e,f){var z,y +if($.X3===c)return d.$2(e,f) +z=P.PJ(c) +try{y=d.$2(e,f) +return y}finally{$.X3=z}}, +Tk:function(a,b,c,d){var z=C.NU!==c +if(z)d=c.xi(d,!(!z||C.NU.gF7()===c)) +P.IA(d)}, +th:{ +"^":"r:2;Q", +$1:function(a){var z,y +H.ox() +z=this.Q +y=z.a +z.a=null +y.$0()}}, +ha:{ +"^":"r:6;Q,a,b", +$1:function(a){var z,y;++init.globalState.e.a +this.Q.a=a +z=this.a +y=this.b +z.firstChild?z.removeChild(y):z.appendChild(y)}}, +C6:{ +"^":"r:0;Q", +$0:function(){H.ox() +this.Q.$0()}}, +Ft:{ +"^":"r:0;Q", +$0:function(){H.ox() +this.Q.$0()}}, +O6:{ +"^":"OH;Q,a", +X:function(a){var z,y +z="Uncaught Error: "+H.d(this.Q) +y=this.a +return y!=null?z+("\nStack Trace:\n"+H.d(y)):z}, +static:{HR:function(a,b){if(b!=null)return b +if(!!J.t(a).$isGe)return a.gI4() +return}}}, +b8:{ +"^":"a;"}, +Pf:{ +"^":"a;MM:Q<", +w0:[function(a,b){a=a!=null?a:new P.LK() +if(this.Q.Q!==0)throw H.b(P.s("Future already completed")) +$.X3.toString +this.ZL(a,b)},function(a){return this.w0(a,null)},"pm","$2","$1","gYJ",2,2,7,38]}, +Zf:{ +"^":"Pf;Q", +aM:function(a,b){var z=this.Q +if(z.Q!==0)throw H.b(P.s("Future already completed")) +z.Xf(b)}, +ZL:function(a,b){this.Q.Nk(a,b)}}, +Fe:{ +"^":"a;nV:Q<,yG:a>,b,c,d", +gt9:function(){return this.a.a}, +gUF:function(){return(this.b&1)!==0}, +gLi:function(){return this.b===6}, +gyq:function(){return this.b===8}, +gdU:function(){return this.c}, +gco:function(){return this.c}}, +vs:{ +"^":"a;Q,t9:a<,b", +gAT:function(){return this.Q===8}, +sKl:function(a){if(a)this.Q=2 +else this.Q=0}, +Rx:function(a,b){var z,y +z=H.J(new P.vs(0,$.X3,null),[null]) +y=z.a +if(y!==C.NU){y.toString +if(b!=null)b=P.VH(b,y)}y=b==null?1:3 +this.xf(new P.Fe(null,z,y,a,b)) +return z}, +Z:function(a){return this.Rx(a,null)}, +wM:function(a){var z,y +z=$.X3 +y=new P.vs(0,z,null) +y.$builtinTypeInfo=this.$builtinTypeInfo +if(z!==C.NU)z.toString +this.xf(new P.Fe(null,y,8,a,null)) +return y}, +eY:function(){if(this.Q!==0)throw H.b(P.s("Future already completed")) +this.Q=1}, +gcF:function(){return this.b}, +gSt:function(){return this.b}, +vd:function(a){this.Q=4 +this.b=a}, +P9:function(a){this.Q=8 +this.b=a}, +Is:function(a,b){this.P9(new P.OH(a,b))}, +xf:function(a){var z +if(this.Q>=4){z=this.a +z.toString +P.Tk(null,null,z,new P.da(this,a))}else{a.Q=this.b +this.b=a}}, +ah:function(){var z,y,x +z=this.b +this.b=null +for(y=null;z!=null;y=z,z=x){x=z.gnV() +z.Q=y}return y}, +HH:function(a){var z,y +z=J.t(a) +if(!!z.$isb8)if(!!z.$isvs)P.A9(a,this) +else P.k3(a,this) +else{y=this.ah() +this.vd(a) +P.HZ(this,y)}}, +X2:function(a){var z=this.ah() +this.vd(a) +P.HZ(this,z)}, +ZL:[function(a,b){var z=this.ah() +this.P9(new P.OH(a,b)) +P.HZ(this,z)},function(a){return this.ZL(a,null)},"yk","$2","$1","gFa",2,2,8,38], +Xf:function(a){var z +if(a==null);else{z=J.t(a) +if(!!z.$isb8){if(!!z.$isvs){z=a.Q +if(z>=4&&z===8){this.eY() +z=this.a +z.toString +P.Tk(null,null,z,new P.rH(this,a))}else P.A9(a,this)}else P.k3(a,this) +return}}this.eY() +z=this.a +z.toString +P.Tk(null,null,z,new P.cX(this,a))}, +Nk:function(a,b){var z +this.eY() +z=this.a +z.toString +P.Tk(null,null,z,new P.ZL(this,a,b))}, +$isb8:1, +static:{k3:function(a,b){b.Q=2 +a.Rx(new P.pV(b),new P.U7(b))},A9:function(a,b){var z +b.Q=2 +z=new P.Fe(null,b,0,null,null) +if(a.Q>=4)P.HZ(a,z) +else a.xf(z)},HZ:function(a,b){var z,y,x,w,v,u,t,s,r,q,p,o +z={} +z.e=a +for(y=a;!0;){x={} +w=y.gAT() +if(b==null){if(w){v=z.e.gSt() +y=z.e.gt9() +x=J.w8(v) +u=v.gI4() +y.toString +P.L2(null,null,y,x,u)}return}for(;b.gnV()!=null;b=t){t=b.Q +b.Q=null +P.HZ(z.e,b)}x.b=!0 +s=w?null:z.e.gcF() +x.c=s +x.d=!1 +y=!w +if(!y||b.gUF()||b.b===8){r=b.gt9() +if(w){u=z.e.gt9() +u.toString +if(u==null?r!=null:u!==r){u=u.gF7() +r.toString +u=u===r}else u=!0 +u=!u}else u=!1 +if(u){v=z.e.gSt() +y=z.e.gt9() +x=J.w8(v) +u=v.gI4() +y.toString +P.L2(null,null,y,x,u) +return}q=$.X3 +if(q==null?r!=null:q!==r)$.X3=r +else q=null +if(y){if(b.gUF())x.b=new P.rq(x,b,s,r).$0()}else new P.RW(z,x,b,r).$0() +if(b.gyq())new P.YP(z,x,w,b,r).$0() +if(q!=null)$.X3=q +if(x.d)return +if(x.b===!0){y=x.c +y=(s==null?y!=null:s!==y)&&!!J.t(y).$isb8}else y=!1 +if(y){p=x.c +o=b.a +if(p instanceof P.vs)if(p.Q>=4){o.Q=2 +z.e=p +b=new P.Fe(null,o,0,null,null) +y=p +continue}else P.A9(p,o) +else P.k3(p,o) +return}}o=b.a +b=o.ah() +y=x.b +x=x.c +if(y===!0){o.Q=4 +o.b=x}else{o.Q=8 +o.b=x}z.e=o +y=o}}}}, +da:{ +"^":"r:0;Q,a", +$0:function(){P.HZ(this.Q,this.a)}}, +pV:{ +"^":"r:2;Q", +$1:function(a){this.Q.X2(a)}}, +U7:{ +"^":"r:9;Q", +$2:function(a,b){this.Q.ZL(a,b)}, +$1:function(a){return this.$2(a,null)}}, +rH:{ +"^":"r:0;Q,a", +$0:function(){P.A9(this.a,this.Q)}}, +cX:{ +"^":"r:0;Q,a", +$0:function(){this.Q.X2(this.a)}}, +ZL:{ +"^":"r:0;Q,a,b", +$0:function(){this.Q.ZL(this.a,this.b)}}, +rq:{ +"^":"r:10;Q,a,b,c", +$0:function(){var z,y,x,w +try{this.Q.c=this.c.FI(this.a.gdU(),this.b) +return!0}catch(x){w=H.Ru(x) +z=w +y=H.ts(x) +this.Q.c=new P.OH(z,y) +return!1}}}, +RW:{ +"^":"r:1;Q,a,b,c", +$0:function(){var z,y,x,w,v,u,t,s,r,q,p,o,n,m +z=this.Q.e.gSt() +y=!0 +r=this.b +if(r.gLi()){x=r.c +try{y=this.c.FI(x,J.w8(z))}catch(q){r=H.Ru(q) +w=r +v=H.ts(q) +r=J.w8(z) +p=w +o=(r==null?p==null:r===p)?z:new P.OH(w,v) +r=this.a +r.c=o +r.b=!1 +return}}u=r.d +if(y===!0&&u!=null){try{r=u +p=H.N7() +p=H.KT(p,[p,p]).Zg(r) +n=this.c +m=this.a +if(p)m.c=n.mg(u,J.w8(z),z.gI4()) +else m.c=n.FI(u,J.w8(z))}catch(q){r=H.Ru(q) +t=r +s=H.ts(q) +r=J.w8(z) +p=t +o=(r==null?p==null:r===p)?z:new P.OH(t,s) +r=this.a +r.c=o +r.b=!1 +return}this.a.b=!0}else{r=this.a +r.c=z +r.b=!1}}}, +YP:{ +"^":"r:1;Q,a,b,c,d", +$0:function(){var z,y,x,w,v,u,t +z={} +z.a=null +try{w=this.d.Gr(this.c.gco()) +z.a=w +v=w}catch(u){z=H.Ru(u) +y=z +x=H.ts(u) +if(this.b){z=J.w8(this.Q.e.gSt()) +v=y +v=z==null?v==null:z===v +z=v}else z=!1 +v=this.a +if(z)v.c=this.Q.e.gSt() +else v.c=new P.OH(y,x) +v.b=!1 +return}if(!!J.t(v).$isb8){v=this.c +t=v.gyG(v) +t.sKl(!0) +this.a.d=!0 +z.a.Rx(new P.jZ(this.Q,t),new P.FZ(z,t))}}}, +jZ:{ +"^":"r:2;Q,a", +$1:function(a){P.HZ(this.Q.e,new P.Fe(null,this.a,0,null,null))}}, +FZ:{ +"^":"r:9;Q,a", +$2:function(a,b){var z,y +z=this.Q +if(!(z.a instanceof P.vs)){y=H.J(new P.vs(0,$.X3,null),[null]) +z.a=y +y.Is(a,b)}P.HZ(z.a,new P.Fe(null,this.a,0,null,null))}, +$1:function(a){return this.$2(a,null)}}, +OM:{ +"^":"a;Q,a", +Ki:function(){return this.Q.$0()}}, +qh:{ +"^":"a;", +ez:function(a,b){return H.J(new P.t3(b,this),[H.W8(this,"qh",0),null])}, +tg:function(a,b){var z,y +z={} +y=H.J(new P.vs(0,$.X3,null),[P.a2]) +z.a=null +z.a=this.X5(new P.Sd(z,this,b,y),!0,new P.YJ(y),y.gFa()) +return y}, +aN:function(a,b){var z,y +z={} +y=H.J(new P.vs(0,$.X3,null),[null]) +z.a=null +z.a=this.X5(new P.lz(z,this,b,y),!0,new P.M4(y),y.gFa()) +return y}, +gv:function(a){var z,y +z={} +y=H.J(new P.vs(0,$.X3,null),[P.KN]) +z.a=0 +this.X5(new P.B5(z),!0,new P.PI(z,y),y.gFa()) +return y}, +gl0:function(a){var z,y +z={} +y=H.J(new P.vs(0,$.X3,null),[P.a2]) +z.a=null +z.a=this.X5(new P.j4(z,y),!0,new P.iS(y),y.gFa()) +return y}, +br:function(a){var z,y +z=H.J([],[H.W8(this,"qh",0)]) +y=H.J(new P.vs(0,$.X3,null),[[P.zM,H.W8(this,"qh",0)]]) +this.X5(new P.VV(this,z),!0,new P.Dy(z,y),y.gFa()) +return y}, +grZ:function(a){var z,y +z={} +y=H.J(new P.vs(0,$.X3,null),[H.W8(this,"qh",0)]) +z.a=null +z.b=!1 +this.X5(new P.UH(z,this),!0,new P.Z5(z,y),y.gFa()) +return y}}, +Sd:{ +"^":"r;Q,a,b,c", +$1:function(a){var z,y +z=this.Q +y=this.c +P.FE(new P.jv(this.b,a),new P.bi(z,y),P.TB(z.a,y))}, +$signature:function(){return H.IG(function(a){return{func:"Lf",args:[a]}},this.a,"qh")}}, +jv:{ +"^":"r:0;Q,a", +$0:function(){return J.mG(this.a,this.Q)}}, +bi:{ +"^":"r:11;Q,a", +$1:function(a){if(a===!0)P.Bb(this.Q.a,this.a,!0)}}, +YJ:{ +"^":"r:0;Q", +$0:function(){this.Q.HH(!1)}}, +lz:{ +"^":"r;Q,a,b,c", +$1:function(a){P.FE(new P.Rl(this.b,a),new P.Jb(),P.TB(this.Q.a,this.c))}, +$signature:function(){return H.IG(function(a){return{func:"Lf",args:[a]}},this.a,"qh")}}, +Rl:{ +"^":"r:0;Q,a", +$0:function(){return this.Q.$1(this.a)}}, +Jb:{ +"^":"r:2;", +$1:function(a){}}, +M4:{ +"^":"r:0;Q", +$0:function(){this.Q.HH(null)}}, +B5:{ +"^":"r:2;Q", +$1:function(a){++this.Q.a}}, +PI:{ +"^":"r:0;Q,a", +$0:function(){this.a.HH(this.Q.a)}}, +j4:{ +"^":"r:2;Q,a", +$1:function(a){P.Bb(this.Q.a,this.a,!1)}}, +iS:{ +"^":"r:0;Q", +$0:function(){this.Q.HH(!0)}}, +VV:{ +"^":"r;Q,a", +$1:function(a){this.a.push(a)}, +$signature:function(){return H.IG(function(a){return{func:"Lf",args:[a]}},this.Q,"qh")}}, +Dy:{ +"^":"r:0;Q,a", +$0:function(){this.a.HH(this.Q)}}, +UH:{ +"^":"r;Q,a", +$1:function(a){var z=this.Q +z.b=!0 +z.a=a}, +$signature:function(){return H.IG(function(a){return{func:"Lf",args:[a]}},this.a,"qh")}}, +Z5:{ +"^":"r:0;Q,a", +$0:function(){var z,y,x,w +x=this.Q +if(x.b){this.a.HH(x.a) +return}try{x=H.Wp() +throw H.b(x)}catch(w){x=H.Ru(w) +z=x +y=H.ts(w) +P.nD(this.a,z,y)}}}, +MO:{ +"^":"a;"}, +NO:{ +"^":"a;"}, +KA:{ +"^":"a;t9:c<", +nB:function(a,b){var z=this.d +if((z&8)!==0)return +this.d=(z+128|4)>>>0 +if(z<128&&this.f!=null)this.f.FK() +if((z&4)===0&&(this.d&32)===0)this.Ge(this.gb9())}, +yy:function(a){return this.nB(a,null)}, +QE:function(){var z=this.d +if((z&8)!==0)return +if(z>=128){z-=128 +this.d=z +if(z<128){if((z&64)!==0){z=this.f +z=!z.gl0(z)}else z=!1 +if(z)this.f.t2(this) +else{z=(this.d&4294967291)>>>0 +this.d=z +if((z&32)===0)this.Ge(this.gxl())}}}}, +Gv:function(){var z=(this.d&4294967279)>>>0 +this.d=z +if((z&8)!==0)return this.e +this.WN() +return this.e}, +WN:function(){var z=(this.d|8)>>>0 +this.d=z +if((z&64)!==0)this.f.FK() +if((this.d&32)===0)this.f=null +this.e=this.cZ()}, +Rg:["L5",function(a){var z=this.d +if((z&8)!==0)return +if(z<32)this.MW(a) +else this.C2(H.J(new P.LV(a,null),[null]))}], +UI:["AV",function(a,b){var z=this.d +if((z&8)!==0)return +if(z<32)this.y7(a,b) +else this.C2(new P.DS(a,b,null))}], +EC:function(){var z=this.d +if((z&8)!==0)return +z=(z|2)>>>0 +this.d=z +if(z<32)this.Dd() +else this.C2(C.Wj)}, +lT:[function(){},"$0","gb9",0,0,1], +ie:[function(){},"$0","gxl",0,0,1], +cZ:function(){return}, +C2:function(a){var z,y +z=this.f +if(z==null){z=new P.Qk(null,null,0) +this.f=z}z.h(0,a) +y=this.d +if((y&64)===0){y=(y|64)>>>0 +this.d=y +if(y<128)this.f.t2(this)}}, +MW:function(a){var z=this.d +this.d=(z|32)>>>0 +this.c.m1(this.Q,a) +this.d=(this.d&4294967263)>>>0 +this.Iy((z&4)!==0)}, +y7:function(a,b){var z,y +z=this.d +y=new P.Vo(this,a,b) +if((z&1)!==0){this.d=(z|16)>>>0 +this.WN() +z=this.e +if(!!J.t(z).$isb8)z.wM(y) +else y.$0()}else{y.$0() +this.Iy((z&4)!==0)}}, +Dd:function(){var z,y +z=new P.qB(this) +this.WN() +this.d=(this.d|16)>>>0 +y=this.e +if(!!J.t(y).$isb8)y.wM(z) +else z.$0()}, +Ge:function(a){var z=this.d +this.d=(z|32)>>>0 +a.$0() +this.d=(this.d&4294967263)>>>0 +this.Iy((z&4)!==0)}, +Iy:function(a){var z,y +if((this.d&64)!==0){z=this.f +z=z.gl0(z)}else z=!1 +if(z){z=(this.d&4294967231)>>>0 +this.d=z +if((z&4)!==0)if(z<128){z=this.f +z=z==null||z.gl0(z)}else z=!1 +else z=!1 +if(z)this.d=(this.d&4294967291)>>>0}for(;!0;a=y){z=this.d +if((z&8)!==0){this.f=null +return}y=(z&4)!==0 +if(a===y)break +this.d=(z^32)>>>0 +if(y)this.lT() +else this.ie() +this.d=(this.d&4294967263)>>>0}z=this.d +if((z&64)!==0&&z<128)this.f.t2(this)}, +Cy:function(a,b,c,d,e){var z=this.c +z.toString +this.Q=a +this.a=P.VH(b,z) +this.b=c}}, +Vo:{ +"^":"r:1;Q,a,b", +$0:function(){var z,y,x,w,v,u +z=this.Q +y=z.d +if((y&8)!==0&&(y&16)===0)return +z.d=(y|32)>>>0 +y=z.a +x=H.N7() +x=H.KT(x,[x,x]).Zg(y) +w=z.c +v=this.a +u=z.a +if(x)w.z8(u,v,this.b) +else w.m1(u,v) +z.d=(z.d&4294967263)>>>0}}, +qB:{ +"^":"r:1;Q", +$0:function(){var z,y +z=this.Q +y=z.d +if((y&16)===0)return +z.d=(y|42)>>>0 +z.c.bH(z.b) +z.d=(z.d&4294967263)>>>0}}, +aA:{ +"^":"a;aw:Q@"}, +LV:{ +"^":"aA;a,Q", +dP:function(a){a.MW(this.a)}}, +DS:{ +"^":"aA;kc:a>,I4:b<,Q", +dP:function(a){a.y7(this.a,this.b)}}, +yR:{ +"^":"a;", +dP:function(a){a.Dd()}, +gaw:function(){return}, +saw:function(a){throw H.b(P.s("No events after a done."))}}, +B3:{ +"^":"a;", +t2:function(a){var z=this.Q +if(z===1)return +if(z>=1){this.Q=1 +return}P.rb(new P.CR(this,a)) +this.Q=1}, +FK:function(){if(this.Q===1)this.Q=3}}, +CR:{ +"^":"r:0;Q,a", +$0:function(){var z,y +z=this.Q +y=z.Q +z.Q=0 +if(y===3)return +z.TO(this.a)}}, +Qk:{ +"^":"B3;a,b,Q", +gl0:function(a){return this.b==null}, +h:function(a,b){var z=this.b +if(z==null){this.b=b +this.a=b}else{z.saw(b) +this.b=b}}, +TO:function(a){var z,y +z=this.a +y=z.gaw() +this.a=y +if(y==null)this.b=null +z.dP(a)}}, +dF:{ +"^":"a;Q,a,b,c", +I8:function(){this.Q=null +this.b=null +this.a=null +this.c=1}, +zp:[function(a){var z +if(this.c===2){this.a=a +z=this.b +this.b=null +this.c=0 +z.HH(!0) +return}this.Q.yy(0) +this.b=a +this.c=3},"$1","gH2",2,0,function(){return H.IG(function(a){return{func:"lU",void:true,args:[a]}},this.$receiver,"dF")}], +d8:[function(a,b){var z +if(this.c===2){z=this.b +this.I8() +z.ZL(a,b) +return}this.Q.yy(0) +this.b=new P.OH(a,b) +this.c=4},function(a){return this.d8(a,null)},"oG","$2","$1","gTv",2,2,7,38], +mX:[function(){if(this.c===2){var z=this.b +this.I8() +z.HH(!1) +return}this.Q.yy(0) +this.b=null +this.c=5},"$0","gEU",0,0,1], +td:function(a,b){var z,y +z=this.gH2() +y=this.gTv() +this.Q=a.X5(z,!0,this.gEU(),y)}}, +dR:{ +"^":"r:0;Q,a,b", +$0:function(){return this.Q.ZL(this.a,this.b)}}, +uR:{ +"^":"r:3;Q,a", +$2:function(a,b){return P.NX(this.Q,this.a,a,b)}}, +QX:{ +"^":"r:0;Q,a", +$0:function(){return this.Q.HH(this.a)}}, +YR:{ +"^":"qh;", +X5:function(a,b,c,d){return this.w3(a,d,c,!0===b)}, +zC:function(a,b,c){return this.X5(a,null,b,c)}, +w3:function(a,b,c,d){return P.zK(this,a,b,c,d,H.W8(this,"YR",0),H.W8(this,"YR",1))}, +FC:function(a,b){b.Rg(a)}, +$asqh:function(a,b){return[b]}}, +fB:{ +"^":"KA;r,x,Q,a,b,c,d,e,f", +Rg:function(a){if((this.d&2)!==0)return +this.L5(a)}, +UI:function(a,b){if((this.d&2)!==0)return +this.AV(a,b)}, +lT:[function(){var z=this.x +if(z==null)return +z.yy(0)},"$0","gb9",0,0,1], +ie:[function(){var z=this.x +if(z==null)return +z.QE()},"$0","gxl",0,0,1], +cZ:function(){var z=this.x +if(z!=null){this.x=null +z.Gv()}return}, +yi:[function(a){this.r.FC(a,this)},"$1","gwU",2,0,function(){return H.IG(function(a,b){return{func:"xv",void:true,args:[a]}},this.$receiver,"fB")}], +Yg:[function(a,b){this.UI(a,b)},"$2","gPr",4,0,12], +oZ:[function(){this.EC()},"$0","gos",0,0,1], +JC:function(a,b,c,d,e,f,g){var z,y +z=this.gwU() +y=this.gPr() +this.x=this.r.Q.zC(z,this.gos(),y)}, +$asKA:function(a,b){return[b]}, +static:{zK:function(a,b,c,d,e,f,g){var z,y +z=$.X3 +y=e?1:0 +y=H.J(new P.fB(a,null,null,null,null,z,y,null,null),[f,g]) +y.Cy(b,c,d,e,g) +y.JC(a,b,c,d,e,f,g) +return y}}}, +t3:{ +"^":"YR;a,Q", +FC:function(a,b){var z,y,x,w,v +z=null +try{z=this.Eh(a)}catch(w){v=H.Ru(w) +y=v +x=H.ts(w) +P.iw(b,y,x) +return}b.Rg(z)}, +Eh:function(a){return this.a.$1(a)}}, +OH:{ +"^":"a;kc:Q>,I4:a<", +X:function(a){return H.d(this.Q)}, +$isGe:1}, +m0:{ +"^":"a;"}, +pK:{ +"^":"r:0;Q,a", +$0:function(){var z=this.Q +throw H.b(new P.O6(z,P.HR(z,this.a)))}}, +R8:{ +"^":"m0;", +gF7:function(){return this}, +bH:function(a){var z,y,x,w +try{if(C.NU===$.X3){x=a.$0() +return x}x=P.T8(null,null,this,a) +return x}catch(w){x=H.Ru(w) +z=x +y=H.ts(w) +return P.L2(null,null,this,z,y)}}, +m1:function(a,b){var z,y,x,w +try{if(C.NU===$.X3){x=a.$1(b) +return x}x=P.yv(null,null,this,a,b) +return x}catch(w){x=H.Ru(w) +z=x +y=H.ts(w) +return P.L2(null,null,this,z,y)}}, +z8:function(a,b,c){var z,y,x,w +try{if(C.NU===$.X3){x=a.$2(b,c) +return x}x=P.Qx(null,null,this,a,b,c) +return x}catch(w){x=H.Ru(w) +z=x +y=H.ts(w) +return P.L2(null,null,this,z,y)}}, +xi:function(a,b){if(b)return new P.hj(this,a) +else return new P.MK(this,a)}, +oj:function(a,b){if(b)return new P.pQ(this,a) +else return new P.FG(this,a)}, +p:function(a,b){return}, +Gr:function(a){if($.X3===C.NU)return a.$0() +return P.T8(null,null,this,a)}, +FI:function(a,b){if($.X3===C.NU)return a.$1(b) +return P.yv(null,null,this,a,b)}, +mg:function(a,b,c){if($.X3===C.NU)return a.$2(b,c) +return P.Qx(null,null,this,a,b,c)}}, +hj:{ +"^":"r:0;Q,a", +$0:function(){return this.Q.bH(this.a)}}, +MK:{ +"^":"r:0;Q,a", +$0:function(){return this.Q.Gr(this.a)}}, +pQ:{ +"^":"r:2;Q,a", +$1:function(a){return this.Q.m1(this.a,a)}}, +FG:{ +"^":"r:2;Q,a", +$1:function(a){return this.Q.FI(this.a,a)}}}],["","",,P,{ +"^":"", +B:function(a,b,c){return H.B7(a,H.J(new H.N5(0,null,null,null,null,null,0),[b,c]))}, +A:function(a,b){return H.J(new H.N5(0,null,null,null,null,null,0),[a,b])}, +Ou:[function(a,b){return J.mG(a,b)},"$2","iv",4,0,30], +T9:[function(a){return J.v1(a)},"$1","rm",2,0,31], +EP:function(a,b,c){var z,y +if(P.nH(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}z=[] +y=$.Ex() +y.push(a) +try{P.T4(a,z)}finally{if(0>=y.length)return H.e(y,0) +y.pop()}y=new P.Rn(b) +y.We(z,", ") +y=y.Q+=c +return y.charCodeAt(0)==0?y:y}, +WE:function(a,b,c){var z,y +if(P.nH(a))return b+"..."+c +z=new P.Rn(b) +y=$.Ex() +y.push(a) +try{z.We(a,", ")}finally{if(0>=y.length)return H.e(y,0) +y.pop()}y=z +y.Q=y.gIN()+c +y=z.gIN() +return y.charCodeAt(0)==0?y:y}, +nH:function(a){var z,y +for(z=0;y=$.Ex(),z=b.length)return H.e(b,0) +v=b.pop() +if(0>=b.length)return H.e(b,0) +u=b.pop()}else{t=z.gk();++x +if(!z.D()){if(x<=4){b.push(H.d(t)) +return}v=H.d(t) +if(0>=b.length)return H.e(b,0) +u=b.pop() +y+=v.length+2}else{s=z.gk();++x +for(;z.D();t=s,s=r){r=z.gk();++x +if(x>100){while(!0){if(!(y>75&&x>3))break +if(0>=b.length)return H.e(b,0) +y-=b.pop().length+2;--x}b.push("...") +return}}u=H.d(t) +v=H.d(s) +y+=v.length+u.length+4}}if(x>b.length+2){y+=5 +q="..."}else q=null +while(!0){if(!(y>80&&b.length>3))break +if(0>=b.length)return H.e(b,0) +y-=b.pop().length+2 +if(q==null){y+=5 +q="..."}}if(q!=null)b.push(q) +b.push(u) +b.push(v)}, +L5:function(a,b,c,d,e){return H.J(new H.N5(0,null,null,null,null,null,0),[d,e])}, +Q9:function(a,b){return H.J(new P.ey(0,null,null,null,null,null,0),[a,b])}, +Ls:function(a,b,c,d){return H.J(new P.b6(0,null,null,null,null,null,0),[d])}, +tM:function(a,b){var z,y +z=P.Ls(null,null,null,b) +for(y=J.Nx(a);y.D();)z.h(0,y.c) +return z}, +vW:function(a){var z,y,x +z={} +if(P.nH(a))return"{...}" +y=new P.Rn("") +try{$.Ex().push(a) +x=y +x.Q=x.gIN()+"{" +z.a=!0 +J.kH(a,new P.LG(z,y)) +z=y +z.Q=z.gIN()+"}"}finally{z=$.Ex() +if(0>=z.length)return H.e(z,0) +z.pop()}z=y.gIN() +return z.charCodeAt(0)==0?z:z}, +ey:{ +"^":"N5;Q,a,b,c,d,e,f", +dk:function(a){return H.CU(a)&0x3ffffff}, +Fh:function(a,b){var z,y,x +if(a==null)return-1 +z=a.length +for(y=0;y=0}, +Zt:function(a){var z +if(!(typeof a==="string"&&a!=="__proto__"))z=typeof a==="number"&&(a&0x3ffffff)===a +else z=!0 +if(z)return this.tg(0,a)?a:null +else return this.vR(a)}, +vR:function(a){var z,y,x +z=this.c +if(z==null)return +y=z[this.rk(a)] +x=this.DF(y,a) +if(x<0)return +return J.Tf(y,x).gdA()}, +aN:function(a,b){var z,y +z=this.d +y=this.f +for(;z!=null;){b.$1(z.Q) +if(y!==this.f)throw H.b(P.a4(this)) +z=z.a}}, +grZ:function(a){var z=this.e +if(z==null)throw H.b(P.s("No elements")) +return z.Q}, +h:function(a,b){var z,y,x +if(typeof b==="string"&&b!=="__proto__"){z=this.a +if(z==null){y=Object.create(null) +y[""]=y +delete y[""] +this.a=y +z=y}return this.bQ(z,b)}else if(typeof b==="number"&&(b&0x3ffffff)===b){x=this.b +if(x==null){y=Object.create(null) +y[""]=y +delete y[""] +this.b=y +x=y}return this.bQ(x,b)}else return this.B7(b)}, +B7:function(a){var z,y,x +z=this.c +if(z==null){z=P.T2() +this.c=z}y=this.rk(a) +x=z[y] +if(x==null)z[y]=[this.yo(a)] +else{if(this.DF(x,a)>=0)return!1 +x.push(this.yo(a))}return!0}, +Rz:function(a,b){if(typeof b==="string"&&b!=="__proto__")return this.H4(this.a,b) +else if(typeof b==="number"&&(b&0x3ffffff)===b)return this.H4(this.b,b) +else return this.qg(b)}, +qg:function(a){var z,y,x +z=this.c +if(z==null)return!1 +y=z[this.rk(a)] +x=this.DF(y,a) +if(x<0)return!1 +this.GS(y.splice(x,1)[0]) +return!0}, +V1:function(a){if(this.Q>0){this.e=null +this.d=null +this.c=null +this.b=null +this.a=null +this.Q=0 +this.f=this.f+1&67108863}}, +bQ:function(a,b){if(a[b]!=null)return!1 +a[b]=this.yo(b) +return!0}, +H4:function(a,b){var z +if(a==null)return!1 +z=a[b] +if(z==null)return!1 +this.GS(z) +delete a[b] +return!0}, +yo:function(a){var z,y +z=new P.tj(a,null,null) +if(this.d==null){this.e=z +this.d=z}else{y=this.e +z.b=y +y.a=z +this.e=z}++this.Q +this.f=this.f+1&67108863 +return z}, +GS:function(a){var z,y +z=a.gn8() +y=a.a +if(z==null)this.d=y +else z.a=y +if(y==null)this.e=z +else y.b=z;--this.Q +this.f=this.f+1&67108863}, +rk:function(a){return J.v1(a)&0x3ffffff}, +DF:function(a,b){var z,y +if(a==null)return-1 +z=a.length +for(y=0;y"]=z +delete z[""] +return z}}}, +tj:{ +"^":"a;dA:Q<,a,n8:b<"}, +zQ:{ +"^":"a;Q,a,b,c", +gk:function(){return this.c}, +D:function(){var z=this.Q +if(this.a!==z.f)throw H.b(P.a4(z)) +else{z=this.b +if(z==null){this.c=null +return!1}else{this.c=z.Q +this.b=z.a +return!0}}}}, +Yp:{ +"^":"Gq;Q", +gv:function(a){return this.Q.length}, +p:function(a,b){var z=this.Q +if(b>>>0!==b||b>=z.length)return H.e(z,b) +return z[b]}}, +u3:{ +"^":"Vj;"}, +mW:{ +"^":"a;", +ez:function(a,b){return H.K1(this,b,H.W8(this,"mW",0),null)}, +tg:function(a,b){var z +for(z=this.gu(this);z.D();)if(J.mG(z.gk(),b))return!0 +return!1}, +aN:function(a,b){var z +for(z=this.gu(this);z.D();)b.$1(z.gk())}, +tt:function(a,b){return P.z(this,b,H.W8(this,"mW",0))}, +br:function(a){return this.tt(a,!0)}, +gv:function(a){var z,y +z=this.gu(this) +for(y=0;z.D();)++y +return y}, +gl0:function(a){return!this.gu(this).D()}, +gor:function(a){return this.gl0(this)!==!0}, +grZ:function(a){var z,y +z=this.gu(this) +if(!z.D())throw H.b(H.Wp()) +do y=z.gk() +while(z.D()) +return y}, +gr8:function(a){var z,y +z=this.gu(this) +if(!z.D())throw H.b(H.Wp()) +y=z.gk() +if(z.D())throw H.b(H.dU()) +return y}, +Zv:function(a,b){var z,y,x +if(b<0)H.vh(P.TE(b,0,null,"index",null)) +for(z=this.gu(this),y=0;z.D();){x=z.gk() +if(b===y)return x;++y}throw H.b(P.Cf(b,this,"index",null,y))}, +X:function(a){return P.EP(this,"(",")")}}, +LU:{ +"^":"E9;"}, +E9:{ +"^":"a+lD;", +$iszM:1, +$aszM:null, +$isqC:1}, +lD:{ +"^":"a;", +gu:function(a){return H.J(new H.a7(a,this.gv(a),0,null),[H.W8(a,"lD",0)])}, +Zv:function(a,b){return this.p(a,b)}, +aN:function(a,b){var z,y +z=this.gv(a) +for(y=0;y>>0){x=this.Q +if(y<0||y>=x.length)return H.e(x,y) +b.$1(x[y]) +if(z!==this.c)H.vh(P.a4(this))}}, +gl0:function(a){return this.a===this.b}, +gv:function(a){return(this.b-this.a&this.Q.length-1)>>>0}, +grZ:function(a){var z,y,x +z=this.a +y=this.b +if(z===y)throw H.b(H.Wp()) +z=this.Q +x=z.length +y=(y-1&x-1)>>>0 +if(y<0||y>=x)return H.e(z,y) +return z[y]}, +h:function(a,b){this.B7(b)}, +V1:function(a){var z,y,x,w,v +z=this.a +y=this.b +if(z!==y){for(x=this.Q,w=x.length,v=w-1;z!==y;z=(z+1&v)>>>0){if(z<0||z>=w)return H.e(x,z) +x[z]=null}this.b=0 +this.a=0;++this.c}}, +X:function(a){return P.WE(this,"{","}")}, +Ux:function(){var z,y,x,w +z=this.a +if(z===this.b)throw H.b(H.Wp());++this.c +y=this.Q +x=y.length +if(z>=x)return H.e(y,z) +w=y[z] +y[z]=null +this.a=(z+1&x-1)>>>0 +return w}, +B7:function(a){var z,y,x +z=this.Q +y=this.b +x=z.length +if(y<0||y>=x)return H.e(z,y) +z[y]=a +x=(y+1&x-1)>>>0 +this.b=x +if(this.a===x)this.wL();++this.c}, +wL:function(){var z,y,x,w +z=Array(this.Q.length*2) +z.fixed$length=Array +y=H.J(z,[H.Kp(this,0)]) +z=this.Q +x=this.a +w=z.length-x +C.Nm.YW(y,0,w,z,x) +C.Nm.YW(y,w,w+this.a,this.Q,0) +this.a=0 +this.b=this.Q.length +this.Q=y}, +Eo:function(a,b){var z=Array(8) +z.fixed$length=Array +this.Q=H.J(z,[b])}, +$isqC:1, +static:{NZ:function(a,b){var z=H.J(new P.Sw(null,0,0,0),[b]) +z.Eo(a,b) +return z}}}, +o0:{ +"^":"a;Q,a,b,c,d", +gk:function(){return this.d}, +D:function(){var z,y,x +z=this.Q +if(this.b!==z.c)H.vh(P.a4(z)) +y=this.c +if(y===this.a){this.d=null +return!1}z=z.Q +x=z.length +if(y>=x)return H.e(z,y) +this.d=z[y] +this.c=(y+1&x-1)>>>0 +return!0}}, +Ma:{ +"^":"a;", +gl0:function(a){return this.gv(this)===0}, +gor:function(a){return this.gv(this)!==0}, +ez:function(a,b){return H.J(new H.xy(this,b),[H.Kp(this,0),null])}, +X:function(a){return P.WE(this,"{","}")}, +aN:function(a,b){var z +for(z=this.gu(this);z.D();)b.$1(z.c)}, +zV:function(a,b){var z,y,x +z=this.gu(this) +if(!z.D())return"" +y=new P.Rn("") +if(b===""){do y.Q+=H.d(z.c) +while(z.D())}else{y.Q=H.d(z.c) +for(;z.D();){y.Q+=b +y.Q+=H.d(z.c)}}x=y.Q +return x.charCodeAt(0)==0?x:x}, +grZ:function(a){var z,y +z=this.gu(this) +if(!z.D())throw H.b(H.Wp()) +do y=z.c +while(z.D()) +return y}, +$isqC:1}, +Vj:{ +"^":"Ma;"}}],["","",,P,{ +"^":"", +KH:function(a){var z +if(a==null)return +if(typeof a!="object")return a +if(Object.getPrototypeOf(a)!==Array.prototype)return new P.uw(a,Object.create(null),null) +for(z=0;z>>0}, +uw:{ +"^":"a;Q,a,b", +p:function(a,b){var z,y +z=this.a +if(z==null)return this.b.p(0,b) +else if(typeof b!=="string")return +else{y=z[b] +return typeof y=="undefined"?this.fb(b):y}}, +gv:function(a){var z +if(this.a==null){z=this.b +z=z.gv(z)}else z=this.Cf().length +return z}, +gl0:function(a){var z +if(this.a==null){z=this.b +z=z.gv(z)}else z=this.Cf().length +return z===0}, +gor:function(a){var z +if(this.a==null){z=this.b +z=z.gv(z)}else z=this.Cf().length +return z>0}, +gUQ:function(a){var z +if(this.a==null){z=this.b +return z.gUQ(z)}return H.K1(this.Cf(),new P.A5(this),null,null)}, +q:function(a,b,c){var z,y +if(this.a==null)this.b.q(0,b,c) +else if(this.x4(b)){z=this.a +z[b]=c +y=this.Q +if(y==null?z!=null:y!==z)y[b]=null}else this.XK().q(0,b,c)}, +x4:function(a){if(this.a==null)return this.b.x4(a) +if(typeof a!=="string")return!1 +return Object.prototype.hasOwnProperty.call(this.Q,a)}, +to:function(a,b){var z +if(this.x4(a))return this.p(0,a) +z=b.$0() +this.q(0,a,z) +return z}, +aN:function(a,b){var z,y,x,w +if(this.a==null)return this.b.aN(0,b) +z=this.Cf() +for(y=0;y":r=w?">":null +break +case"/":r=x?"/":null +break +default:r=null}if(r!=null){if(t==null)t=new P.Rn(z.Nj(a,b,u)) +t.Q=t.Q+r}else if(t!=null)t.Q+=H.d(s)}if(t!=null){z=t.Q +z=z.charCodeAt(0)==0?z:z}else z=null +return z}, +$aszF:function(){return[P.I,P.I]}}, +by:{ +"^":"Uk;Q,a", +pW:function(a,b){return P.BS(a,this.gHe().Q)}, +kV:function(a){return this.pW(a,null)}, +gHe:function(){return C.A3}, +$asUk:function(){return[P.a,P.I]}}, +QM:{ +"^":"zF;Q", +$aszF:function(){return[P.I,P.a]}}, +u5:{ +"^":"Zi;Q", +goc:function(a){return"utf-8"}, +gZE:function(){return new P.E3()}}, +E3:{ +"^":"zF;", +ME:function(a,b,c){var z,y,x,w +z=a.gv(a) +P.jB(b,c,z,null,null,null) +y=z.T(0,b) +x=y.R(0,3) +x=new Uint8Array(x) +w=new P.Rw(0,0,x) +w.Gx(a,b,z) +w.O6(a.O2(0,z.T(0,1)),0) +return new Uint8Array(x.subarray(0,C.NA.i4(x,0,w.a,x.length)))}, +WJ:function(a){return this.ME(a,0,null)}, +$aszF:function(){return[P.I,[P.zM,P.KN]]}}, +Rw:{ +"^":"a;Q,a,b", +O6:function(a,b){var z,y,x,w +if((b&64512)===56320)P.ZZ(a,b) +else{z=this.b +y=this.a++ +x=C.jn.j(224,a.l(0,12)) +w=z.length +if(y>=w)return H.e(z,y) +z[y]=x +x=this.a++ +y=C.jn.j(128,a.l(0,6).i(0,63)) +if(x>=w)return H.e(z,x) +z[x]=y +y=this.a++ +x=C.jn.j(128,a.i(0,63)) +if(y>=w)return H.e(z,y) +z[y]=x +return!1}}, +Gx:function(a,b,c){var z,y,x,w,v,u +P.Md(a.O2(0,c.T(0,1))) +for(z=this.b,y=z.length,x=b;C.jn.w(x,c);++x){w=a.O2(0,x) +w.B(0,127) +P.Md(w) +w.B(0,2047) +v=this.a +if(v+2>=y)break +this.a=v+1 +u=C.jn.j(224,w.l(0,12)) +if(v>=y)return H.e(z,v) +z[v]=u +u=this.a++ +v=C.jn.j(128,w.l(0,6).i(0,63)) +if(u>=y)return H.e(z,u) +z[u]=v +v=this.a++ +u=C.jn.j(128,w.i(0,63)) +if(v>=y)return H.e(z,v) +z[v]=u}return x}}, +GY:{ +"^":"zF;Q", +ME:function(a,b,c){var z,y,x,w +z=J.wS(a) +P.jB(b,c,z,null,null,null) +y=new P.Rn("") +x=this.Q +w=new P.bz(x,y,!0,0,0,0) +w.ME(a,b,z) +if(w.d>0){if(!x)H.vh(P.cD("Unfinished UTF-8 octet sequence",null,null)) +y.Q+=H.Lw(65533) +w.c=0 +w.d=0 +w.e=0}x=y.Q +return x.charCodeAt(0)==0?x:x}, +WJ:function(a){return this.ME(a,0,null)}, +$aszF:function(){return[[P.zM,P.KN],P.I]}}, +bz:{ +"^":"a;Q,a,b,c,d,e", +ME:function(a,b,c){var z,y,x,w,v,u,t,s,r,q,p,o,n +z=this.c +y=this.d +x=this.e +this.c=0 +this.d=0 +this.e=0 +w=new P.b2(c) +v=new P.yn(this,a,b,c) +$loop$0:for(u=this.a,t=!this.Q,s=J.U6(a),r=b;!0;r=n){$multibyte$2:if(y>0){do{if(r===c)break $loop$0 +q=s.p(a,r) +if(typeof q!=="number")return q.i() +if((q&192)!==128){if(t)throw H.b(P.cD("Bad UTF-8 encoding 0x"+C.CD.WZ(q,16),null,null)) +this.b=!1 +u.Q+=H.Lw(65533) +y=0 +break $multibyte$2}else{z=(z<<6|q&63)>>>0;--y;++r}}while(y>0) +p=x-1 +if(p<0||p>=4)return H.e(C.Gb,p) +if(z<=C.Gb[p]){if(t)throw H.b(P.cD("Overlong encoding of 0x"+C.jn.WZ(z,16),null,null)) +z=65533 +y=0 +x=0}if(z>1114111){if(t)throw H.b(P.cD("Character outside valid Unicode range: 0x"+C.jn.WZ(z,16),null,null)) +z=65533}if(!this.b||z!==65279)u.Q+=H.Lw(z) +this.b=!1}for(;r0){this.c=z +this.d=y +this.e=x}}}, +b2:{ +"^":"r:14;Q", +$2:function(a,b){var z,y,x,w +z=this.Q +for(y=J.U6(a),x=b;xa)throw H.b(P.TE(b,0,a,null,null)) +if(c==null)c=a +else if(ca)throw H.b(P.TE(c,b,a,null,null)) +return c}, +bw:function(a,b,c){var z,y,x,w +if(b<0)throw H.b(P.TE(b,0,J.wS(a),null,null)) +z=c==null +if(!z&&c=z.length)return H.e(z,x) +z[x]=y}return z}, +JS:function(a){var z=H.d(a) +H.qw(z)}, +nu:function(a,b,c){return new H.VR(a,H.v4(a,c,b,!1),null,null)}, +HM:function(a,b,c){var z +if(a.constructor===Array){z=a.length +c=P.Z3(z,b,c) +return H.eT(b>0||c0)z.a.Q+=", " +P.Hp(a)}}, +a2:{ +"^":"a;"}, +"+bool":0, +iP:{ +"^":"a;"}, +CP:{ +"^":"lf;"}, +"+double":0, +a6:{ +"^":"a;m5:Q<", +g:function(a,b){return new P.a6(C.jn.g(this.Q,b.gm5()))}, +T:function(a,b){return new P.a6(this.Q-b.gm5())}, +w:function(a,b){return this.Qb.gm5()}, +m:function(a,b){if(b==null)return!1 +if(!(b instanceof P.a6))return!1 +return this.Q===b.Q}, +giO:function(a){return this.Q&0x1FFFFFFF}, +X:function(a){var z,y,x,w,v +z=new P.DW() +y=this.Q +if(y<0)return"-"+new P.a6(-y).X(0) +x=z.$1(C.jn.JV(C.jn.BU(y,6e7),60)) +w=z.$1(C.jn.JV(C.jn.BU(y,1e6),60)) +v=new P.P7().$1(C.jn.JV(y,1e6)) +return""+C.jn.BU(y,36e8)+":"+H.d(x)+":"+H.d(w)+"."+H.d(v)}, +Vy:function(a){return new P.a6(Math.abs(this.Q))}, +G:function(a){return new P.a6(-this.Q)}}, +P7:{ +"^":"r:17;", +$1:function(a){if(a>=1e5)return""+a +if(a>=1e4)return"0"+a +if(a>=1000)return"00"+a +if(a>=100)return"000"+a +if(a>=10)return"0000"+a +return"00000"+a}}, +DW:{ +"^":"r:17;", +$1:function(a){if(a>=10)return""+a +return"0"+a}}, +Ge:{ +"^":"a;", +gI4:function(){return H.ts(this.$thrownJsError)}}, +LK:{ +"^":"Ge;", +X:function(a){return"Throw of null."}}, +AT:{ +"^":"Ge;Q,a,oc:b>,G1:c>", +gZ2:function(){return"Invalid argument"+(!this.Q?"(s)":"")}, +gY:function(){return""}, +X:function(a){var z,y,x,w,v,u +z=this.b +y=z!=null?" ("+H.d(z)+")":"" +z=this.c +x=z==null?"":": "+H.d(z) +w=this.gZ2()+y+x +if(!this.Q)return w +v=this.gY() +u=P.hl(this.a) +return w+v+": "+H.d(u)}, +static:{p:function(a){return new P.AT(!1,null,null,a)}}}, +bJ:{ +"^":"AT;d,e,Q,a,b,c", +gZ2:function(){return"RangeError"}, +gY:function(){var z,y,x +z=this.d +if(z==null){z=this.e +y=z!=null?": Not less than or equal to "+H.d(z):""}else{x=this.e +if(x==null)y=": Not greater than or equal to "+H.d(z) +else{if(typeof x!=="number")return x.A() +if(typeof z!=="number")return H.o(z) +if(x>z)y=": Not in range "+z+".."+x+", inclusive" +else y=xc)throw H.b(P.TE(a,b,c,d,e))},jB:function(a,b,c,d,e,f){if(a<0||a>c)throw H.b(P.TE(a,0,c,"start",f)) +if(b!=null){if(bc)throw H.b(P.TE(b,a,c,"end",f)) +return b}return c}}}, +eY:{ +"^":"AT;d,v:e>,Q,a,b,c", +gZ2:function(){return"RangeError"}, +gY:function(){P.hl(this.d) +var z=": index should be less than "+H.d(this.e) +return J.UN(this.a,0)?": index must not be negative":z}, +static:{Cf:function(a,b,c,d,e){var z=e!=null?e:J.wS(b) +return new P.eY(b,z,!0,a,c,"Index out of range")}}}, +ub:{ +"^":"Ge;G1:Q>", +X:function(a){return"Unsupported operation: "+this.Q}, +static:{f:function(a){return new P.ub(a)}}}, +ds:{ +"^":"Ge;G1:Q>", +X:function(a){var z=this.Q +return z!=null?"UnimplementedError: "+H.d(z):"UnimplementedError"}, +static:{W:function(a){return new P.ds(a)}}}, +lj:{ +"^":"Ge;G1:Q>", +X:function(a){return"Bad state: "+this.Q}, +static:{s:function(a){return new P.lj(a)}}}, +UV:{ +"^":"Ge;Q", +X:function(a){return"Concurrent modification during iteration: "+H.d(P.hl(this.Q))+"."}, +static:{a4:function(a){return new P.UV(a)}}}, +k5:{ +"^":"a;", +X:function(a){return"Out of Memory"}, +gI4:function(){return}, +$isGe:1}, +VS:{ +"^":"a;", +X:function(a){return"Stack Overflow"}, +gI4:function(){return}, +$isGe:1}, +t7:{ +"^":"Ge;Q", +X:function(a){return"Reading static variable '"+this.Q+"' during its initialization"}}, +HG:{ +"^":"a;G1:Q>", +X:function(a){var z=this.Q +if(z==null)return"Exception" +return"Exception: "+H.d(z)}}, +aE:{ +"^":"a;G1:Q>,a,b", +X:function(a){var z,y,x,w,v,u,t,s,r,q,p,o,n,m,l +z=this.Q +y=z!=null&&""!==z?"FormatException: "+H.d(z):"FormatException" +x=this.b +w=this.a +if(typeof w!=="string")return x!=null?y+(" (at offset "+H.d(x)+")"):y +if(x!=null)z=x<0||x>w.length +else z=!1 +if(z)x=null +if(x==null){if(w.length>78)w=J.Nj(w,0,75)+"..." +return y+"\n"+H.d(w)}for(z=J.rY(w),v=1,u=0,t=null,s=0;s1?y+(" (at line "+v+", character "+(x-u+1)+")\n"):y+(" (at character "+(x+1)+")\n") +q=w.length +for(s=x;s78)if(x-u<75){p=u+75 +o=u +n="" +m="..."}else{if(q-x<75){o=q-75 +p=q +m=""}else{o=x-36 +p=x+36 +m="..."}n="..."}else{p=q +o=u +n="" +m=""}l=z.Nj(w,o,p) +return y+n+l+m+"\n"+C.xB.R(" ",x-o+n.length)+"^\n"}, +static:{cD:function(a,b,c){return new P.aE(a,b,c)}}}, +kM:{ +"^":"a;oc:Q>", +X:function(a){return"Expando:"+H.d(this.Q)}, +p:function(a,b){var z=H.of(b,"expando$values") +return z==null?null:H.of(z,this.KV())}, +q:function(a,b,c){var z=H.of(b,"expando$values") +if(z==null){z=new P.a() +H.aw(b,"expando$values",z)}H.aw(z,this.KV(),c)}, +KV:function(){var z,y +z=H.of(this,"expando$key") +if(z==null){y=$.Ss +$.Ss=y+1 +z="expando$key$"+y +H.aw(this,"expando$key",z)}return z}}, +EH:{ +"^":"a;"}, +KN:{ +"^":"lf;"}, +"+int":0, +An:{ +"^":"a;"}, +zM:{ +"^":"a;", +$aszM:null, +$isqC:1}, +"+List":0, +w:{ +"^":"a;"}, +c8:{ +"^":"a;", +X:function(a){return"null"}}, +"+Null":0, +lf:{ +"^":"a;"}, +"+num":0, +a:{ +"^":";", +m:function(a,b){return this===b}, +giO:function(a){return H.eQ(this)}, +X:function(a){return H.a5(this)}}, +Od:{ +"^":"a;"}, +Gz:{ +"^":"a;"}, +I:{ +"^":"a;", +$isvX:1}, +"+String":0, +Rn:{ +"^":"a;IN:Q<", +gv:function(a){return this.Q.length}, +gl0:function(a){return this.Q.length===0}, +gor:function(a){return this.Q.length!==0}, +We:function(a,b){var z=J.Nx(a) +if(!z.D())return +if(b.length===0){do this.Q+=H.d(z.gk()) +while(z.D())}else{this.Q+=H.d(z.gk()) +for(;z.D();){this.Q+=b +this.Q+=H.d(z.gk())}}}, +X:function(a){var z=this.Q +return z.charCodeAt(0)==0?z:z}}, +wv:{ +"^":"a;"}, +iD:{ +"^":"a;Q,a,b,Fi:c<,d,e,f,r,x", +gJf:function(a){var z=this.Q +if(z==null)return"" +if(J.rY(z).nC(z,"["))return C.xB.Nj(z,1,z.length-1) +return z}, +gtp:function(a){var z=this.a +if(z==null)return P.jM(this.c) +return z}, +gFj:function(){var z,y +z=this.r +if(z==null){y=this.b +if(y.length!==0&&C.xB.O2(y,0)===47)y=C.xB.yn(y,1) +z=y===""?C.xD:H.J(new H.A8(y.split("/"),P.t9()),[null,null]).tt(0,!1) +z=H.J(new P.Yp(z),[null]) +this.r=z}return z}, +Kf:function(a,b){var z,y,x,w,v,u,t,s,r +z=a.length +if(z===0)return"/"+b +for(y=0,x=0;C.xB.Qi(b,"../",x);){x+=3;++y}w=C.xB.cn(a,"/") +while(!0){if(!(w>0&&y>0))break +v=C.xB.Pk(a,"/",w-1) +if(v<0)break +u=w-v +t=u!==2 +if(!t||u===3)if(C.xB.O2(a,v+1)===46)t=!t||C.xB.O2(a,v+2)===46 +else t=!1 +else t=!1 +if(t)break;--y +w=v}t=w+1 +s=C.xB.yn(b,x-3*y) +H.Yx(s) +H.fI(t) +r=P.jB(t,null,z,null,null,null) +H.fI(r) +return H.wC(a,t,r,s)}, +jI:function(a){if(a.length>0&&C.xB.O2(a,0)===46)return!0 +return C.xB.OY(a,"/.")!==-1}, +mE:function(a){var z,y,x,w,v +if(!this.jI(a))return a +z=[] +for(y=a.split("/"),y=H.J(new H.a7(y,y.length,0,null),[H.Kp(y,0)]),x=!1;y.D();){w=y.c +if(J.mG(w,"..")){v=z.length +if(v!==0)if(v===1){if(0>=v)return H.e(z,0) +v=!J.mG(z[0],"")}else v=!0 +else v=!1 +if(v){if(0>=z.length)return H.e(z,0) +z.pop()}x=!0}else if("."===w)x=!0 +else{z.push(w) +x=!1}}if(x)z.push("") +return C.Nm.zV(z,"/")}, +eU:function(a){var z,y +z=this.c +if(z!==""&&z!=="file")throw H.b(P.f("Cannot extract a file path from a "+z+" URI")) +z=this.e +if((z==null?"":z)!=="")throw H.b(P.f("Cannot extract a file path from a URI with a query component")) +z=this.f +if((z==null?"":z)!=="")throw H.b(P.f("Cannot extract a file path from a URI with a fragment component")) +if(this.gJf(this)!=="")H.vh(P.f("Cannot extract a non-Windows file path from a file URI with an authority")) +P.eX(this.gFj(),!1) +y=new P.Rn("") +if(this.gws())y.Q="/" +y.We(this.gFj(),"/") +z=y.Q +z=z.charCodeAt(0)==0?z:z +return z}, +t4:function(){return this.eU(null)}, +gws:function(){if(this.b.length===0)return!1 +return C.xB.nC(this.b,"/")}, +X:function(a){var z,y,x,w +z=this.c +y=""!==z?z+":":"" +x=this.Q +w=x==null +if(!w||C.xB.nC(this.b,"//")||z==="file"){z=y+"//" +y=this.d +if(y.length!==0)z=z+y+"@" +if(!w)z+=H.d(x) +y=this.a +if(y!=null)z=z+":"+H.d(y)}else z=y +z+=this.b +y=this.e +if(y!=null)z=z+"?"+H.d(y) +y=this.f +if(y!=null)z=z+"#"+H.d(y) +return z.charCodeAt(0)==0?z:z}, +m:function(a,b){var z,y,x,w +if(b==null)return!1 +z=J.t(b) +if(!z.$isiD)return!1 +if(this.c===b.c)if(this.Q!=null===(b.Q!=null))if(this.d===b.d){y=this.gJf(this) +x=z.gJf(b) +if(y==null?x==null:y===x){y=this.gtp(this) +z=z.gtp(b) +if(y==null?z==null:y===z)if(this.b===b.b){z=this.e +y=z==null +x=b.e +w=x==null +if(!y===!w){if(y)z="" +if(z==null?(w?"":x)==null:z===(w?"":x)){z=this.f +y=z==null +x=b.f +w=x==null +if(!y===!w){if(y)z="" +z=z==null?(w?"":x)==null:z===(w?"":x)}else z=!1}else z=!1}else z=!1}else z=!1 +else z=!1}else z=!1}else z=!1 +else z=!1 +else z=!1 +return z}, +giO:function(a){var z,y,x,w,v +z=new P.G1() +y=this.gJf(this) +x=this.gtp(this) +w=this.e +if(w==null)w="" +v=this.f +return z.$2(this.c,z.$2(this.d,z.$2(y,z.$2(x,z.$2(this.b,z.$2(w,z.$2(v==null?"":v,1)))))))}, +static:{jM:function(a){if(a==="http")return 80 +if(a==="https")return 443 +return 0},hK:function(a){var z,y,x,w,v,u,t,s,r,q,p,o,n +z={} +z.a="" +z.b="" +z.c=null +z.d=null +z.e=0 +z.f=-1 +w=a.length +v=0 +while(!0){if(!(v>>4 +if(t>=8)return H.e(C.ea,t) +t=(C.ea[t]&C.jn.iK(1,v&15))!==0}else t=!1 +if(t){if(w&&65<=v&&90>=v){if(x==null)x=new P.Rn("") +if(y>>4 +if(t>=8)return H.e(C.ak,t) +t=(C.ak[t]&C.jn.iK(1,v&15))!==0}else t=!1 +if(t)P.Xz(a,z,"Invalid character") +else{if((v&64512)===55296&&z+1>>0 +r=2}else r=1}else r=1 +if(x==null)x=new P.Rn("") +s=C.xB.Nj(a,y,z) +if(!w)s=s.toLowerCase() +x.Q=x.Q+s +x.Q+=P.lN(v) +z+=r +y=z}}}}if(x==null)return C.xB.Nj(a,b,c) +if(y=97 +if(!(y&&z<=122))x=z>=65&&z<=90 +else x=!0 +if(!x)P.Xz(a,0,"Scheme not starting with alphabetic character") +for(w=0;w>>4 +if(x>=8)return H.e(C.mK,x) +x=(C.mK[x]&C.jn.iK(1,v&15))!==0}else x=!1 +if(!x)P.Xz(a,w,"Illegal scheme character") +if(v<97||v>122)y=!1}a=C.xB.Nj(a,0,b) +return!y?a.toLowerCase():a},ua:function(a,b,c){return P.Xc(a,b,c,C.to)},fM:function(a,b,c,d,e,f){var z=P.Xc(a,b,c,C.Wd) +if(z.length===0){if(f)return"/"}else if((f||e)&&C.xB.O2(z,0)!==47)return"/"+z +return z},LE:function(a,b,c,d){var z,y,x +z={} +y=a==null +if(y&&!0)return +y=!y +if(y);if(y)return P.Xc(a,b,c,C.o5) +x=new P.Rn("") +z.a=!0 +C.jN.aN(d,new P.yZ(z,x)) +z=x.Q +return z.charCodeAt(0)==0?z:z},UJ:function(a,b,c){if(a==null)return +return P.Xc(a,b,c,C.o5)},qr:function(a){if(57>=a)return 48<=a +a|=32 +return 97<=a&&102>=a},tc:function(a){if(57>=a)return a-48 +return(a|32)-87},Sa:function(a,b,c){var z,y,x,w +z=b+2 +if(z>=a.length)return"%" +y=C.xB.O2(a,b+1) +x=C.xB.O2(a,z) +if(!P.qr(y)||!P.qr(x))return"%" +w=P.tc(y)*16+P.tc(x) +if(w<127){z=C.jn.wG(w,4) +if(z>=8)return H.e(C.F3,z) +z=(C.F3[z]&C.jn.iK(1,w&15))!==0}else z=!1 +if(z)return H.Lw(c&&65<=w&&90>=w?(w|32)>>>0:w) +if(y>=97||x>=97)return C.xB.Nj(a,b,b+3).toUpperCase() +return},lN:function(a){var z,y,x,w,v,u,t,s +if(a<128){z=Array(3) +z.fixed$length=Array +z[0]=37 +z[1]=C.xB.O2("0123456789ABCDEF",a>>>4) +z[2]=C.xB.O2("0123456789ABCDEF",a&15)}else{if(a>2047)if(a>65535){y=240 +x=4}else{y=224 +x=3}else{y=192 +x=2}w=3*x +z=Array(w) +z.fixed$length=Array +for(v=0;--x,x>=0;y=128){u=C.jn.bf(a,6*x)&63|y +if(v>=w)return H.e(z,v) +z[v]=37 +t=v+1 +s=C.xB.O2("0123456789ABCDEF",u>>>4) +if(t>=w)return H.e(z,t) +z[t]=s +s=v+2 +t=C.xB.O2("0123456789ABCDEF",u&15) +if(s>=w)return H.e(z,s) +z[s]=t +v+=3}}return P.HM(z,0,null)},Xc:function(a,b,c,d){var z,y,x,w,v,u,t,s +for(z=b,y=z,x=null;z>>4 +if(v>=8)return H.e(d,v) +v=(d[v]&C.jn.iK(1,w&15))!==0}else v=!1 +if(v)++z +else{if(w===37){u=P.Sa(a,z,!1) +if(u==null){z+=3 +continue}if("%"===u){u="%25" +t=1}else t=3}else{if(w<=93){v=w>>>4 +if(v>=8)return H.e(C.ak,v) +v=(C.ak[v]&C.jn.iK(1,w&15))!==0}else v=!1 +if(v){P.Xz(a,z,"Invalid character") +u=null +t=null}else{if((w&64512)===55296){v=z+1 +if(v>>0 +t=2}else t=1}else t=1}else t=1 +u=P.lN(w)}}if(x==null)x=new P.Rn("") +v=C.xB.Nj(a,y,z) +x.Q=x.Q+v +x.Q+=H.d(u) +if(typeof t!=="number")return H.o(t) +z+=t +y=z}}if(x==null)return C.xB.Nj(a,b,c) +if(y>>0) +o=J.Tf(v,2) +if(typeof o!=="number")return o.L() +s=J.Tf(v,3) +if(typeof s!=="number")return H.o(s) +J.i4(x,(o<<8|s)>>>0)}catch(p){H.Ru(p) +z.$2("invalid end of IPv6 address.",w)}}if(t){if(J.wS(x)>7)z.$1("an address with a wildcard must have less than 7 parts")}else if(J.wS(x)!==8)z.$1("an address without a wildcard must contain exactly 8 parts") +n=Array(16) +n.$builtinTypeInfo=[P.KN] +u=0 +m=0 +while(!0){s=J.wS(x) +if(typeof s!=="number")return H.o(s) +if(!(u=16)return H.e(n,m) +n[m]=0 +s=m+1 +if(s>=16)return H.e(n,s) +n[s]=0 +m+=2}}else{if(typeof l!=="number")return l.l() +s=C.CD.wG(l,8) +if(m<0||m>=16)return H.e(n,m) +n[m]=s +s=m+1 +if(s>=16)return H.e(n,s) +n[s]=l&255 +m+=2}++u}return n},jW:function(a,b,c,d){var z,y,x,w,v,u,t +z=new P.rI() +y=new P.Rn("") +x=c.gZE().WJ(b) +for(w=x.length,v=0;v>>4 +if(t>=8)return H.e(a,t) +t=(a[t]&C.jn.iK(1,u&15))!==0}else t=!1 +if(t)y.Q+=H.Lw(u) +else if(d&&u===32)y.Q+=H.Lw(43) +else{y.Q+=H.Lw(37) +z.$2(u,y)}}z=y.Q +return z.charCodeAt(0)==0?z:z},oh:function(a,b){var z,y,x +for(z=0,y=0;y<2;++y){x=C.xB.O2(a,b+y) +if(48<=x&&x<=57)z=z*16+x-48 +else{x|=32 +if(97<=x&&x<=102)z=z*16+x-87 +else throw H.b(P.p("Invalid URL encoding"))}}return z},pE:function(a,b,c){var z,y,x,w,v,u,t +z=J.U6(a) +y=!0 +x=0 +while(!0){w=z.gv(a) +if(typeof w!=="number")return H.o(w) +if(!(x127)throw H.b(P.p("Illegal percent encoding in URI")) +if(v===37){if(x+3>a.length)throw H.b(P.p("Truncated URI")) +u.push(P.oh(a,x+1)) +x+=2}else if(c&&v===43)u.push(32) +else u.push(v);++x}}t=b.Q +return new P.GY(t).WJ(u)}}}, +hP:{ +"^":"r:18;", +$1:function(a){a.w(0,128) +return!1}}, +uH:{ +"^":"r:1;Q,a,b", +$0:function(){var z,y,x,w,v,u,t,s,r,q,p,o,n,m +z=this.Q +y=z.e +x=this.a +w=x.length +if(y===w){z.f=this.b +return}z.f=C.xB.O2(x,y) +for(v=this.b,u=-1,t=-1;s=z.e,s=0){z.b=P.ua(x,y,t) +y=t+1}if(u>=0){o=u+1 +if(om||574)this.a.$2("an IPv6 part can only contain a maximum of 4 hex digits",a) +z=H.BU(C.xB.Nj(this.Q,a,b),16,null) +y=J.Wx(z) +if(y.w(z,0)||y.A(z,65535))this.a.$2("each part must be in the range of `0x0..0xFFFF`",a) +return z}}, +rI:{ +"^":"r:13;", +$2:function(a,b){b.Q+=H.Lw(C.xB.O2("0123456789ABCDEF",a>>>4)) +b.Q+=H.Lw(C.xB.O2("0123456789ABCDEF",a&15))}}}],["","",,W,{ +"^":"", +J6:function(a){var z=document.createElement("a",null) +return z}, +U9:function(a,b,c){var z,y +z=J.kp(document.body,a,b,c) +z.toString +y=new W.e7(z) +y=y.ev(y,new W.Cv()) +return y.gr8(y)}, +X:function(a,b,c){return W.T(a,null,null,b,null,null,null,c).Z(new W.V())}, +T:function(a,b,c,d,e,f,g,h){var z,y,x +z=W.zU +y=H.J(new P.Zf(H.J(new P.vs(0,$.X3,null),[z])),[z]) +x=new XMLHttpRequest() +C.Dt.eo(x,"GET",a,!0) +z=H.J(new W.RO(x,"load",!1),[null]) +H.J(new W.xC(0,z.Q,z.a,W.aF(new W.bU(y,x)),z.b),[H.Kp(z,0)]).DN() +z=H.J(new W.RO(x,"error",!1),[null]) +H.J(new W.xC(0,z.Q,z.a,W.aF(y.gYJ()),z.b),[H.Kp(z,0)]).DN() +x.send() +return y.Q}, +C0:function(a,b){a=536870911&a+b +a=536870911&a+((524287&a)<<10>>>0) +return a^a>>>6}, +Up:function(a){a=536870911&a+((67108863&a)<<3>>>0) +a^=a>>>11 +return 536870911&a+((16383&a)<<15>>>0)}, +qc:function(a){var z +if(a==null)return +if("postMessage" in a){z=W.P1(a) +if(!!J.t(z).$isD0)return z +return}else return a}, +aF:function(a){var z=$.X3 +if(z===C.NU)return a +return z.oj(a,!0)}, +qE:{ +"^":"cv;", +$isqE:1, +$iscv:1, +$isKV:1, +$isa:1, +"%":"HTMLAppletElement|HTMLBRElement|HTMLCanvasElement|HTMLContentElement|HTMLDListElement|HTMLDataListElement|HTMLDetailsElement|HTMLDialogElement|HTMLDirectoryElement|HTMLFontElement|HTMLFrameElement|HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLMarqueeElement|HTMLMenuElement|HTMLMenuItemElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLOptGroupElement|HTMLOptionElement|HTMLParagraphElement|HTMLPictureElement|HTMLPreElement|HTMLProgressElement|HTMLQuoteElement|HTMLScriptElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement|HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement|HTMLTableRowElement|HTMLTableSectionElement|HTMLTitleElement|HTMLTrackElement|HTMLUListElement|HTMLUnknownElement;HTMLElement"}, +Gh:{ +"^":"qE;K:target=,y0:hostname=,LU:href},tp:port=,A8:protocol=", +X:function(a){return String(a)}, +$isGv:1, +"%":"HTMLAnchorElement"}, +LL:{ +"^":"pS;G1:message=", +"%":"ApplicationCacheErrorEvent"}, +fY:{ +"^":"qE;K:target=,y0:hostname=,LU:href},tp:port=,A8:protocol=", +X:function(a){return String(a)}, +$isGv:1, +"%":"HTMLAreaElement"}, +nB:{ +"^":"qE;LU:href},K:target=", +"%":"HTMLBaseElement"}, +Az:{ +"^":"Gv;", +"%":";Blob"}, +QP:{ +"^":"qE;", +$isQP:1, +$isD0:1, +$isGv:1, +"%":"HTMLBodyElement"}, +IF:{ +"^":"qE;oc:name=", +"%":"HTMLButtonElement"}, +nx:{ +"^":"KV;v:length=", +$isGv:1, +"%":"CDATASection|Comment|Text;CharacterData"}, +oJ:{ +"^":"BV;v:length=", +"%":"CSS2Properties|CSSStyleDeclaration|MSStyleCSSProperties"}, +BV:{ +"^":"Gv+RE;"}, +RE:{ +"^":"a;"}, +Wy:{ +"^":"qE;", +"%":";HTMLDivElement"}, +QF:{ +"^":"KV;", +Wk:function(a,b){return a.querySelector(b)}, +gVl:function(a){return H.J(new W.RO(a,"click",!1),[null])}, +"%":"Document|HTMLDocument|XMLDocument"}, +hs:{ +"^":"KV;", +Wk:function(a,b){return a.querySelector(b)}, +$isGv:1, +"%":"DocumentFragment|ShadowRoot"}, +cm:{ +"^":"Gv;G1:message=,oc:name=", +"%":"DOMError|FileError"}, +Nh:{ +"^":"Gv;G1:message=", +goc:function(a){var z=a.name +if(P.F7()===!0&&z==="SECURITY_ERR")return"SecurityError" +if(P.F7()===!0&&z==="SYNTAX_ERR")return"SyntaxError" +return z}, +X:function(a){return String(a)}, +"%":"DOMException"}, +IB:{ +"^":"Gv;OR:bottom=,fg:height=,Bb:left=,T8:right=,G6:top=,N:width=", +X:function(a){return"Rectangle ("+H.d(a.left)+", "+H.d(a.top)+") "+H.d(this.gN(a))+" x "+H.d(this.gfg(a))}, +m:function(a,b){var z,y,x +if(b==null)return!1 +z=J.t(b) +if(!z.$istn)return!1 +y=a.left +x=z.gBb(b) +if(y==null?x==null:y===x){y=a.top +x=z.gG6(b) +if(y==null?x==null:y===x){y=this.gN(a) +x=z.gN(b) +if(y==null?x==null:y===x){y=this.gfg(a) +z=z.gfg(b) +z=y==null?z==null:y===z}else z=!1}else z=!1}else z=!1 +return z}, +giO:function(a){var z,y,x,w +z=J.v1(a.left) +y=J.v1(a.top) +x=J.v1(this.gN(a)) +w=J.v1(this.gfg(a)) +return W.Up(W.C0(W.C0(W.C0(W.C0(0,z),y),x),w))}, +$istn:1, +$astn:$.HU, +"%":";DOMRectReadOnly"}, +cv:{ +"^":"KV;", +gQg:function(a){return new W.i7(a)}, +gDD:function(a){return new W.I4(a)}, +X:function(a){return a.localName}, +r6:function(a,b,c,d){var z,y,x,w,v +if(c==null){if(d==null){z=$.lt +if(z==null){z=H.J([],[W.kF]) +y=new W.vD(z) +z.push(W.Tw(null)) +z.push(W.Bl()) +$.lt=y +d=y}else d=z}z=$.EU +if(z==null){z=new W.MM(d) +$.EU=z +c=z}else{z.Q=d +c=z}}else if(d!=null)throw H.b(P.p("validator can only be passed if treeSanitizer is null")) +if($.xo==null){z=document.implementation.createHTMLDocument("") +$.xo=z +$.BO=z.createRange() +x=$.xo.createElement("base",null) +J.r0(x,document.baseURI) +$.xo.head.appendChild(x)}z=$.xo +if(!!this.$isQP)w=z.body +else{w=z.createElement(a.tagName,null) +$.xo.body.appendChild(w)}if("createContextualFragment" in window.Range.prototype){$.BO.selectNodeContents(w) +v=$.BO.createContextualFragment(b)}else{w.innerHTML=b +v=$.xo.createDocumentFragment() +for(;z=w.firstChild,z!=null;)v.appendChild(z)}z=$.xo.body +if(w==null?z!=null:w!==z)J.Mp(w) +c.Pn(v) +document.adoptNode(v) +return v}, +Wk:function(a,b){return a.querySelector(b)}, +gVl:function(a){return H.J(new W.eu(a,"click",!1),[null])}, +$iscv:1, +$isKV:1, +$isa:1, +$isGv:1, +$isD0:1, +"%":";Element"}, +Cv:{ +"^":"r:2;", +$1:function(a){return!!J.t(a).$iscv}}, +Al:{ +"^":"qE;oc:name=", +"%":"HTMLEmbedElement"}, +hY:{ +"^":"pS;kc:error=,G1:message=", +"%":"ErrorEvent"}, +pS:{ +"^":"Gv;", +gK:function(a){return W.qc(a.target)}, +"%":"AnimationPlayerEvent|AudioProcessingEvent|AutocompleteErrorEvent|BeforeUnloadEvent|CloseEvent|CompositionEvent|CustomEvent|DeviceLightEvent|DeviceMotionEvent|DeviceOrientationEvent|DragEvent|ExtendableEvent|FetchEvent|FocusEvent|FontFaceSetLoadEvent|GamepadEvent|HashChangeEvent|IDBVersionChangeEvent|InstallEvent|KeyboardEvent|MIDIConnectionEvent|MIDIMessageEvent|MSPointerEvent|MediaKeyNeededEvent|MediaQueryListEvent|MediaStreamEvent|MediaStreamTrackEvent|MessageEvent|MouseEvent|MouseScrollEvent|MouseWheelEvent|MutationEvent|OfflineAudioCompletionEvent|OverflowEvent|PageTransitionEvent|PointerEvent|PopStateEvent|ProgressEvent|PushEvent|RTCDTMFToneChangeEvent|RTCDataChannelEvent|RTCIceCandidateEvent|RelatedEvent|ResourceProgressEvent|SVGZoomEvent|SecurityPolicyViolationEvent|SpeechRecognitionEvent|StorageEvent|TextEvent|TouchEvent|TrackEvent|TransitionEvent|UIEvent|WebGLContextEvent|WebKitAnimationEvent|WebKitTransitionEvent|WheelEvent|XMLHttpRequestProgressEvent;ClipboardEvent|Event|InputEvent"}, +D0:{ +"^":"Gv;", +v0:function(a,b,c,d){return a.addEventListener(b,H.tR(c,1),d)}, +Ci:function(a,b,c,d){return a.removeEventListener(b,H.tR(c,1),d)}, +$isD0:1, +"%":"MediaStream;EventTarget"}, +as:{ +"^":"qE;oc:name=", +"%":"HTMLFieldSetElement"}, +hH:{ +"^":"Az;oc:name=", +"%":"File"}, +Yu:{ +"^":"qE;v:length=,oc:name=,K:target=", +"%":"HTMLFormElement"}, +zU:{ +"^":"wa;il:responseText=", +R3:function(a,b,c,d,e,f){return a.open(b,c,d,f,e)}, +eo:function(a,b,c,d){return a.open(b,c,d)}, +wR:function(a,b){return a.send(b)}, +$iszU:1, +$isa:1, +"%":"XMLHttpRequest"}, +V:{ +"^":"r:23;", +$1:function(a){return J.M(a)}}, +iO:{ +"^":"r:13;Q", +$2:function(a,b){this.Q.setRequestHeader(a,b)}}, +bU:{ +"^":"r:2;Q,a", +$1:function(a){var z,y,x +z=this.a +y=z.status +if(typeof y!=="number")return y.C() +y=y>=200&&y<300||y===0||y===304 +x=this.Q +if(y)x.aM(0,z) +else x.pm(a)}}, +wa:{ +"^":"D0;", +"%":";XMLHttpRequestEventTarget"}, +tb:{ +"^":"qE;oc:name=", +"%":"HTMLIFrameElement"}, +pA:{ +"^":"qE;", +aM:function(a,b){return a.complete.$1(b)}, +"%":"HTMLImageElement"}, +JK:{ +"^":"qE;oc:name=", +RR:function(a,b){return a.accept.$1(b)}, +$iscv:1, +$isGv:1, +$isD0:1, +"%":"HTMLInputElement"}, +MX:{ +"^":"qE;oc:name=", +"%":"HTMLKeygenElement"}, +Og:{ +"^":"qE;LU:href}", +"%":"HTMLLinkElement"}, +u8:{ +"^":"Gv;", +X:function(a){return String(a)}, +"%":"Location"}, +M6:{ +"^":"qE;oc:name=", +"%":"HTMLMapElement"}, +eL:{ +"^":"qE;kc:error=", +"%":"HTMLAudioElement|HTMLMediaElement|HTMLVideoElement"}, +aB:{ +"^":"pS;G1:message=", +"%":"MediaKeyEvent"}, +fJ:{ +"^":"pS;G1:message=", +"%":"MediaKeyMessageEvent"}, +Ee:{ +"^":"qE;oc:name=", +"%":"HTMLMetaElement"}, +bn:{ +"^":"Ik;", +LV:function(a,b,c){return a.send(b,c)}, +wR:function(a,b){return a.send(b)}, +"%":"MIDIOutput"}, +Ik:{ +"^":"D0;oc:name=", +"%":"MIDIInput;MIDIPort"}, +oU:{ +"^":"Gv;", +$isGv:1, +"%":"Navigator"}, +ih:{ +"^":"Gv;G1:message=,oc:name=", +"%":"NavigatorUserMediaError"}, +e7:{ +"^":"LU;Q", +grZ:function(a){var z=this.Q.lastChild +if(z==null)throw H.b(P.s("No elements")) +return z}, +h:function(a,b){this.Q.appendChild(b)}, +q:function(a,b,c){var z,y +z=this.Q +y=z.childNodes +if(b<0||b>=y.length)return H.e(y,b) +z.replaceChild(c,y[b])}, +gu:function(a){return C.t5.gu(this.Q.childNodes)}, +gv:function(a){return this.Q.childNodes.length}, +sv:function(a,b){throw H.b(P.f("Cannot set length on immutable List."))}, +p:function(a,b){var z=this.Q.childNodes +if(b>>>0!==b||b>=z.length)return H.e(z,b) +return z[b]}, +$asLU:function(){return[W.KV]}, +$asE9:function(){return[W.KV]}, +$aszM:function(){return[W.KV]}}, +KV:{ +"^":"D0;", +wg:function(a){var z=a.parentNode +if(z!=null)z.removeChild(a)}, +X:function(a){var z=a.nodeValue +return z==null?this.VE(a):z}, +tg:function(a,b){return a.contains(b)}, +$isKV:1, +$isa:1, +"%":";Node"}, +BH:{ +"^":"ec;", +gv:function(a){return a.length}, +p:function(a,b){if(b>>>0!==b||b>=a.length)throw H.b(P.Cf(b,a,null,null,null)) +return a[b]}, +q:function(a,b,c){throw H.b(P.f("Cannot assign element of immutable List."))}, +sv:function(a,b){throw H.b(P.f("Cannot resize immutable List."))}, +grZ:function(a){var z=a.length +if(z>0)return a[z-1] +throw H.b(P.s("No elements"))}, +Zv:function(a,b){if(b<0||b>=a.length)return H.e(a,b) +return a[b]}, +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1, +$isXj:1, +$isDD:1, +"%":"NodeList|RadioNodeList"}, +nN:{ +"^":"Gv+lD;", +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1}, +ec:{ +"^":"nN+Gm;", +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1}, +G7:{ +"^":"qE;oc:name=", +"%":"HTMLObjectElement"}, +wL:{ +"^":"qE;oc:name=", +"%":"HTMLOutputElement"}, +HD:{ +"^":"qE;oc:name=", +"%":"HTMLParamElement"}, +RB:{ +"^":"Wy;G1:message=", +"%":"PluginPlaceholderElement"}, +p3:{ +"^":"Gv;G1:message=", +"%":"PositionError"}, +nC:{ +"^":"nx;K:target=", +"%":"ProcessingInstruction"}, +lp:{ +"^":"qE;v:length=,oc:name=", +"%":"HTMLSelectElement"}, +zD:{ +"^":"pS;kc:error=,G1:message=", +"%":"SpeechRecognitionError"}, +KK:{ +"^":"pS;oc:name=", +"%":"SpeechSynthesisEvent"}, +GI:{ +"^":"qE;mO:span=", +"%":"HTMLTableColElement"}, +yY:{ +"^":"qE;", +$isyY:1, +"%":"HTMLTemplateElement"}, +FB:{ +"^":"qE;oc:name=", +"%":"HTMLTextAreaElement"}, +u9:{ +"^":"D0;oc:name=", +gVl:function(a){return H.J(new W.RO(a,"click",!1),[null])}, +$isGv:1, +$isD0:1, +"%":"DOMWindow|Window"}, +CQ:{ +"^":"KV;oc:name=", +"%":"Attr"}, +YC:{ +"^":"Gv;OR:bottom=,fg:height=,Bb:left=,T8:right=,G6:top=,N:width=", +X:function(a){return"Rectangle ("+H.d(a.left)+", "+H.d(a.top)+") "+H.d(a.width)+" x "+H.d(a.height)}, +m:function(a,b){var z,y,x +if(b==null)return!1 +z=J.t(b) +if(!z.$istn)return!1 +y=a.left +x=z.gBb(b) +if(y==null?x==null:y===x){y=a.top +x=z.gG6(b) +if(y==null?x==null:y===x){y=a.width +x=z.gN(b) +if(y==null?x==null:y===x){y=a.height +z=z.gfg(b) +z=y==null?z==null:y===z}else z=!1}else z=!1}else z=!1 +return z}, +giO:function(a){var z,y,x,w +z=J.v1(a.left) +y=J.v1(a.top) +x=J.v1(a.width) +w=J.v1(a.height) +return W.Up(W.C0(W.C0(W.C0(W.C0(0,z),y),x),w))}, +$istn:1, +$astn:$.HU, +"%":"ClientRect"}, +hq:{ +"^":"KV;", +$isGv:1, +"%":"DocumentType"}, +w4:{ +"^":"IB;", +gfg:function(a){return a.height}, +gN:function(a){return a.width}, +"%":"DOMRect"}, +Nf:{ +"^":"qE;", +$isD0:1, +$isGv:1, +"%":"HTMLFrameSetElement"}, +rh:{ +"^":"x5;", +gv:function(a){return a.length}, +p:function(a,b){if(b>>>0!==b||b>=a.length)throw H.b(P.Cf(b,a,null,null,null)) +return a[b]}, +q:function(a,b,c){throw H.b(P.f("Cannot assign element of immutable List."))}, +sv:function(a,b){throw H.b(P.f("Cannot resize immutable List."))}, +grZ:function(a){var z=a.length +if(z>0)return a[z-1] +throw H.b(P.s("No elements"))}, +Zv:function(a,b){if(b<0||b>=a.length)return H.e(a,b) +return a[b]}, +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1, +$isXj:1, +$isDD:1, +"%":"MozNamedAttrMap|NamedNodeMap"}, +zL:{ +"^":"Gv+lD;", +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1}, +x5:{ +"^":"zL+Gm;", +$iszM:1, +$aszM:function(){return[W.KV]}, +$isqC:1}, +D9:{ +"^":"a;", +aN:function(a,b){var z,y +for(z=this.gvc(),z=H.J(new H.a7(z,z.length,0,null),[H.Kp(z,0)]);z.D();){y=z.c +b.$2(y,this.p(0,y))}}, +gvc:function(){var z,y,x,w +z=this.Q.attributes +y=H.J([],[P.I]) +for(x=z.length,w=0;w=z.length)return H.e(z,w) +if(this.Bs(z[w])){if(w>=z.length)return H.e(z,w) +y.push(J.DA(z[w]))}}return y}, +gl0:function(a){return this.gv(this)===0}, +gor:function(a){return this.gv(this)!==0}}, +i7:{ +"^":"D9;Q", +p:function(a,b){return this.Q.getAttribute(b)}, +q:function(a,b,c){this.Q.setAttribute(b,c)}, +gv:function(a){return this.gvc().length}, +Bs:function(a){return a.namespaceURI==null}}, +I4:{ +"^":"As;Q", +DG:function(){var z,y,x +z=P.Ls(null,null,null,P.I) +for(y=this.Q.className.split(" "),y=H.J(new H.a7(y,y.length,0,null),[H.Kp(y,0)]);y.D();){x=J.rr(y.c) +if(x.length!==0)z.h(0,x)}return z}, +p5:function(a){this.Q.className=a.zV(0," ")}}, +RO:{ +"^":"qh;Q,a,b", +X5:function(a,b,c,d){var z=new W.xC(0,this.Q,this.a,W.aF(a),this.b) +z.$builtinTypeInfo=this.$builtinTypeInfo +z.DN() +return z}, +zC:function(a,b,c){return this.X5(a,null,b,c)}}, +eu:{ +"^":"RO;Q,a,b"}, +xC:{ +"^":"MO;Q,a,b,c,d", +Gv:function(){if(this.a==null)return +this.EO() +this.a=null +this.c=null +return}, +nB:function(a,b){if(this.a==null)return;++this.Q +this.EO()}, +yy:function(a){return this.nB(a,null)}, +QE:function(){if(this.a==null||this.Q<=0)return;--this.Q +this.DN()}, +DN:function(){var z,y,x +z=this.c +y=z!=null +if(y&&this.Q<=0){x=this.a +x.toString +if(y)J.F8(x,this.b,z,this.d)}}, +EO:function(){var z,y,x +z=this.c +y=z!=null +if(y){x=this.a +x.toString +if(y)J.Nu(x,this.b,z,this.d)}}}, +JQ:{ +"^":"a;Ks:Q<", +i0:function(a){return $.AM().tg(0,a.tagName)}, +Eb:function(a,b,c){var z,y,x +z=a.tagName +y=$.NJ() +x=y.p(0,H.d(z)+"::"+b) +if(x==null)x=y.p(0,"*::"+b) +if(x==null)return!1 +return x.$4(a,b,c,this)}, +qR:function(a){var z,y +z=$.NJ() +if(z.gl0(z)){for(y=H.J(new H.a7(C.zm,261,0,null),[H.Kp(C.zm,0)]);y.D();)z.q(0,y.c,W.y3()) +for(y=H.J(new H.a7(C.BI,12,0,null),[H.Kp(C.BI,0)]);y.D();)z.q(0,y.c,W.WR())}}, +$iskF:1, +static:{Tw:function(a){var z=new W.mk(W.J6(null),window.location) +z=new W.JQ(z) +z.qR(a) +return z},qD:[function(a,b,c,d){return!0},"$4","y3",8,0,34],QW:[function(a,b,c,d){return d.gKs().Dt(c)},"$4","WR",8,0,34]}}, +Gm:{ +"^":"a;", +gu:function(a){return H.J(new W.W9(a,this.gv(a),-1,null),[H.W8(a,"Gm",0)])}, +h:function(a,b){throw H.b(P.f("Cannot add to immutable List."))}, +$iszM:1, +$aszM:null, +$isqC:1}, +vD:{ +"^":"a;Q", +h:function(a,b){this.Q.push(b)}, +i0:function(a){return C.Nm.Vr(this.Q,new W.mD(a))}, +Eb:function(a,b,c){return C.Nm.Vr(this.Q,new W.Eg(a,b,c))}}, +mD:{ +"^":"r:2;Q", +$1:function(a){return a.i0(this.Q)}}, +Eg:{ +"^":"r:2;Q,a,b", +$1:function(a){return a.Eb(this.Q,this.a,this.b)}}, +m6:{ +"^":"a;Q,a,b,Ks:c<", +i0:function(a){return this.Q.tg(0,a.tagName)}, +Eb:["lZ",function(a,b,c){var z,y +z=a.tagName +y=this.b +if(y.tg(0,H.d(z)+"::"+b))return this.c.Dt(c) +else if(y.tg(0,"*::"+b))return this.c.Dt(c) +else{y=this.a +if(y.tg(0,H.d(z)+"::"+b))return!0 +else if(y.tg(0,"*::"+b))return!0 +else if(y.tg(0,H.d(z)+"::*"))return!0 +else if(y.tg(0,"*::*"))return!0}return!1}], +static:{GA:function(a,b,c,d){var z,y,x +z=P.tM(c,null) +y=P.tM(b,null) +x=d!=null?P.tM(d,null):P.Ls(null,null,null,null) +return new W.m6(z,y,x,a)}}}, +aV:{ +"^":"m6;d,Q,a,b,c", +Eb:function(a,b,c){if(this.lZ(a,b,c))return!0 +if(b==="template"&&c==="")return!0 +if(a.getAttribute("template")==="")return this.d.tg(0,b) +return!1}, +static:{Bl:function(){var z,y,x +z=H.J(new H.A8(C.nm,new W.tE()),[null,null]) +y=P.tM(["TEMPLATE"],null) +z=P.tM(z,null) +x=P.Ls(null,null,null,null) +return new W.aV(P.tM(C.nm,P.I),y,z,x,null)}}}, +tE:{ +"^":"r:2;", +$1:function(a){return"TEMPLATE::"+H.d(a)}}, +W9:{ +"^":"a;Q,a,b,c", +D:function(){var z,y +z=this.b+1 +y=this.a +if(z" +if(typeof console!="undefined")console.warn(x) +z.wg(a) +break}x=y.Q +w=x.getAttribute("is") +if(w!=null)if(!this.Q.Eb(a,"is",w)){window +x="Removing disallowed type extension <"+H.d(a.tagName)+" is=\""+w+"\">" +if(typeof console!="undefined")console.warn(x) +z.wg(a) +break}v=C.Nm.br(y.gvc()) +for(u=y.gvc().length-1;u>=0;--u){if(u>=v.length)return H.e(v,u) +t=v[u] +if(!this.Q.Eb(a,J.Mz(t),x.getAttribute(t))){window +s="Removing disallowed attribute <"+H.d(a.tagName)+" "+t+"=\""+H.d(x.getAttribute(t))+"\">" +if(typeof console!="undefined")console.warn(s) +x.getAttribute(t) +x.removeAttribute(t)}}if(!!z.$isyY)this.Pn(a.content) +break +case 8:case 11:case 3:case 4:break +default:J.Mp(a)}}}, +fm:{ +"^":"r:24;Q", +$1:function(a){var z,y +this.Q.zk(a) +z=a.lastChild +for(;z!=null;z=y){y=z.previousSibling +this.$1(z)}}}}],["","",,P,{ +"^":""}],["","",,P,{ +"^":"", +Y0:{ +"^":"tp;K:target=", +$isGv:1, +"%":"SVGAElement"}, +hf:{ +"^":"Eo;", +$isGv:1, +"%":"SVGAltGlyphElement"}, +ui:{ +"^":"d5;", +$isGv:1, +"%":"SVGAnimateElement|SVGAnimateMotionElement|SVGAnimateTransformElement|SVGAnimationElement|SVGSetElement"}, +jw:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEBlendElement"}, +lv:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEColorMatrixElement"}, +pf:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEComponentTransferElement"}, +py:{ +"^":"d5;", +$isGv:1, +"%":"SVGFECompositeElement"}, +W1:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEConvolveMatrixElement"}, +zo:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEDiffuseLightingElement"}, +wf:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEDisplacementMapElement"}, +bb:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEFloodElement"}, +tk:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEGaussianBlurElement"}, +me:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEImageElement"}, +oB:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEMergeElement"}, +yu:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEMorphologyElement"}, +MI:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEOffsetElement"}, +bM:{ +"^":"d5;", +$isGv:1, +"%":"SVGFESpecularLightingElement"}, +Qy:{ +"^":"d5;", +$isGv:1, +"%":"SVGFETileElement"}, +ju:{ +"^":"d5;", +$isGv:1, +"%":"SVGFETurbulenceElement"}, +OE:{ +"^":"d5;", +$isGv:1, +"%":"SVGFilterElement"}, +tp:{ +"^":"d5;", +$isGv:1, +"%":"SVGCircleElement|SVGClipPathElement|SVGDefsElement|SVGEllipseElement|SVGForeignObjectElement|SVGGElement|SVGGeometryElement|SVGLineElement|SVGPathElement|SVGPolygonElement|SVGPolylineElement|SVGRectElement|SVGSwitchElement;SVGGraphicsElement"}, +rE:{ +"^":"tp;", +$isGv:1, +"%":"SVGImageElement"}, +uz:{ +"^":"d5;", +$isGv:1, +"%":"SVGMarkerElement"}, +NB:{ +"^":"d5;", +$isGv:1, +"%":"SVGMaskElement"}, +Gr:{ +"^":"d5;", +$isGv:1, +"%":"SVGPatternElement"}, +qI:{ +"^":"d5;", +$isGv:1, +"%":"SVGScriptElement"}, +O7:{ +"^":"As;Q", +DG:function(){var z,y,x,w +z=this.Q.getAttribute("class") +y=P.Ls(null,null,null,P.I) +if(z==null)return y +for(x=z.split(" "),x=H.J(new H.a7(x,x.length,0,null),[H.Kp(x,0)]);x.D();){w=J.rr(x.c) +if(w.length!==0)y.h(0,w)}return y}, +p5:function(a){this.Q.setAttribute("class",a.zV(0," "))}}, +d5:{ +"^":"cv;", +gDD:function(a){if(a._cssClassSet==null)a._cssClassSet=new P.O7(a) +return a._cssClassSet}, +gVl:function(a){return H.J(new W.eu(a,"click",!1),[null])}, +$isD0:1, +$isGv:1, +"%":"SVGAltGlyphDefElement|SVGAltGlyphItemElement|SVGComponentTransferFunctionElement|SVGDescElement|SVGDiscardElement|SVGFEDistantLightElement|SVGFEFuncAElement|SVGFEFuncBElement|SVGFEFuncGElement|SVGFEFuncRElement|SVGFEMergeNodeElement|SVGFEPointLightElement|SVGFESpotLightElement|SVGFontElement|SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement|SVGGlyphElement|SVGHKernElement|SVGMetadataElement|SVGMissingGlyphElement|SVGStopElement|SVGStyleElement|SVGTitleElement|SVGVKernElement;SVGElement"}, +hy:{ +"^":"tp;", +$isGv:1, +"%":"SVGSVGElement"}, +aS:{ +"^":"d5;", +$isGv:1, +"%":"SVGSymbolElement"}, +qF:{ +"^":"tp;", +"%":";SVGTextContentElement"}, +Rk:{ +"^":"qF;", +$isGv:1, +"%":"SVGTextPathElement"}, +Eo:{ +"^":"qF;", +"%":"SVGTSpanElement|SVGTextElement;SVGTextPositioningElement"}, +Zv:{ +"^":"tp;", +$isGv:1, +"%":"SVGUseElement"}, +ZD:{ +"^":"d5;", +$isGv:1, +"%":"SVGViewElement"}, +wD:{ +"^":"d5;", +$isGv:1, +"%":"SVGGradientElement|SVGLinearGradientElement|SVGRadialGradientElement"}, +zI:{ +"^":"d5;", +$isGv:1, +"%":"SVGCursorElement"}, +cB:{ +"^":"d5;", +$isGv:1, +"%":"SVGFEDropShadowElement"}, +Pi:{ +"^":"d5;", +$isGv:1, +"%":"SVGGlyphRefElement"}, +xt:{ +"^":"d5;", +$isGv:1, +"%":"SVGMPathElement"}}],["","",,P,{ +"^":""}],["","",,P,{ +"^":""}],["","",,P,{ +"^":"", +Qm:{ +"^":"Gv;G1:message=", +"%":"SQLError"}}],["","",,P,{ +"^":"", +IU:{ +"^":"a;"}}],["","",,P,{ +"^":"", +VC:function(a,b){a=536870911&a+b +a=536870911&a+((524287&a)<<10>>>0) +return a^a>>>6}, +xk:function(a){a=536870911&a+((67108863&a)<<3>>>0) +a^=a>>>11 +return 536870911&a+((16383&a)<<15>>>0)}}],["","",,H,{ +"^":"", +WZ:{ +"^":"Gv;", +$isWZ:1, +"%":"ArrayBuffer"}, +ET:{ +"^":"Gv;", +aq:function(a,b,c){if(typeof b!=="number")return b.w() +if(b<0||b>=c){if(!!this.$iszM)if(c===a.length)throw H.b(P.Cf(b,a,null,null,null)) +throw H.b(P.TE(b,0,c-1,null,null))}else throw H.b(P.p("Invalid list index "+b))}, +bv:function(a,b,c){if(b>>>0!==b||b>=c)this.aq(a,b,c)}, +i4:function(a,b,c,d){var z=d+1 +this.bv(a,b,z) +this.bv(a,c,z) +if(b>c)throw H.b(P.TE(b,0,c,null,null)) +return c}, +$isET:1, +"%":"DataView;ArrayBufferView;b0|Ob|GV|Dg|fj|Ip|Pg"}, +b0:{ +"^":"ET;", +gv:function(a){return a.length}, +$isXj:1, +$isDD:1}, +Dg:{ +"^":"GV;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +q:function(a,b,c){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +a[b]=c}}, +Ob:{ +"^":"b0+lD;", +$iszM:1, +$aszM:function(){return[P.CP]}, +$isqC:1}, +GV:{ +"^":"Ob+SU;"}, +Pg:{ +"^":"Ip;", +q:function(a,b,c){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +a[b]=c}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1}, +fj:{ +"^":"b0+lD;", +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1}, +Ip:{ +"^":"fj+SU;"}, +Hg:{ +"^":"Dg;", +$iszM:1, +$aszM:function(){return[P.CP]}, +$isqC:1, +"%":"Float32Array"}, +K8:{ +"^":"Dg;", +$iszM:1, +$aszM:function(){return[P.CP]}, +$isqC:1, +"%":"Float64Array"}, +xj:{ +"^":"Pg;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"Int16Array"}, +dE:{ +"^":"Pg;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"Int32Array"}, +ZA:{ +"^":"Pg;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"Int8Array"}, +dT:{ +"^":"Pg;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"Uint16Array"}, +nl:{ +"^":"Pg;", +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"Uint32Array"}, +eE:{ +"^":"Pg;", +gv:function(a){return a.length}, +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":"CanvasPixelArray|Uint8ClampedArray"}, +V6:{ +"^":"Pg;", +gv:function(a){return a.length}, +p:function(a,b){var z=a.length +if(b>>>0!==b||b>=z)this.aq(a,b,z) +return a[b]}, +$iszM:1, +$aszM:function(){return[P.KN]}, +$isqC:1, +"%":";Uint8Array"}}],["","",,H,{ +"^":"", +qw:function(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof window=="object")return +if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}}],["","",,X,{ +"^":"", +Ln:{ +"^":"a;"}, +Qh:{ +"^":"a;Q,a,b", +RR:function(a,b){return b.ai(this)}, +static:{H3:function(a){var z,y +z=new X.Qh(P.A(P.I,X.q5),P.A(P.I,X.GS),P.A(P.I,X.mV)) +y=J.U6(a) +J.kl(y.p(a,"system"),X.an()).aN(0,new X.aa(z)) +J.kl(y.p(a,"packages"),X.DQ()).aN(0,new X.Lr(z)) +J.kH(y.p(a,"loose"),new X.J3(z)) +return z}}}, +aa:{ +"^":"r:2;Q", +$1:function(a){this.Q.Q.q(0,J.DA(a),a)}}, +Lr:{ +"^":"r:2;Q", +$1:function(a){this.Q.a.q(0,J.DA(a),a)}}, +J3:{ +"^":"r:2;Q", +$1:function(a){var z,y,x,w +z=J.U6(a) +if(J.mG(z.p(a,0),"LibrarySummary"))y=X.U2(z.p(a,1)) +else{z=z.p(a,1) +x=J.U6(z) +w=x.p(z,"name") +z=J.kl(x.p(z,"messages"),X.e2()).br(0) +y=new X.Hy(w,z)}this.Q.b.q(0,y.goc(y),y)}}, +GS:{ +"^":"a;oc:Q>,a", +RR:function(a,b){return b.DV(this)}, +static:{JC:[function(a){var z,y +z=J.U6(a) +y=new X.GS(z.p(a,"package_name"),P.A(P.I,X.q5)) +J.kl(z.p(a,"libraries"),X.an()).aN(0,new X.pM(y)) +return y},"$1","DQ",2,0,35]}}, +pM:{ +"^":"r:2;Q", +$1:function(a){this.Q.a.q(0,J.DA(a),a)}}, +mV:{ +"^":"Ln;"}, +q5:{ +"^":"a;oc:Q>,a,b", +RR:function(a,b){return b.VG(this)}, +static:{U2:[function(a){var z,y,x +z=J.U6(a) +y=z.p(a,"library_name") +x=J.kl(z.p(a,"messages"),X.e2()).br(0) +z=z.p(a,"lines") +return new X.q5(y,x,z)},"$1","an",2,0,36]}}, +Hy:{ +"^":"a;oc:Q>,a", +RR:function(a,b){return b.tS(this)}}, +bO:{ +"^":"a;Q,a,mO:b>,G1:c>", +RR:function(a,b){return b.IR(this)}, +static:{Vd:[function(a){var z,y,x,w,v +z=J.U6(a) +y=O.XR(z.p(a,"start"),null,null,z.p(a,"url")) +x=O.XR(z.p(a,"end"),null,null,z.p(a,"url")) +w=z.p(a,"text") +v=new T.Y5(y,x,w) +v.Y9(y,x,w) +return new X.bO(z.p(a,"kind"),z.p(a,"level"),v,z.p(a,"message"))},"$1","e2",2,0,37]}}, +zv:{ +"^":"a;", +ai:function(a){var z +for(z=a.Q,z=z.gUQ(z),z=H.J(new H.MH(null,J.Nx(z.Q),z.a),[H.Kp(z,0),H.Kp(z,1)]);z.D();)J.ok(z.Q,this) +for(z=a.a,z=z.gUQ(z),z=H.J(new H.MH(null,J.Nx(z.Q),z.a),[H.Kp(z,0),H.Kp(z,1)]);z.D();)J.ok(z.Q,this) +for(z=a.b,z=z.gUQ(z),z=H.J(new H.MH(null,J.Nx(z.Q),z.a),[H.Kp(z,0),H.Kp(z,1)]);z.D();)J.ok(z.Q,this)}, +DV:function(a){var z +for(z=a.a,z=z.gUQ(z),z=H.J(new H.MH(null,J.Nx(z.Q),z.a),[H.Kp(z,0),H.Kp(z,1)]);z.D();)J.ok(z.Q,this)}, +VG:function(a){var z +for(z=J.Nx(a.a);z.D();)J.ok(z.c,this)}, +tS:function(a){var z +for(z=J.Nx(a.a);z.D();)J.ok(z.c,this)}, +IR:function(a){}}}],["","",,P,{ +"^":"", +dg:function(){var z=$.L4 +if(z==null){z=J.NT(window.navigator.userAgent,"Opera",0) +$.L4=z}return z}, +F7:function(){var z=$.PN +if(z==null){z=P.dg()!==!0&&J.NT(window.navigator.userAgent,"WebKit",0) +$.PN=z}return z}, +As:{ +"^":"a;", +X:function(a){return this.DG().zV(0," ")}, +O4:function(a,b){var z,y +z=this.DG() +if(!z.tg(0,a)){z.h(0,a) +y=!0}else{z.Rz(0,a) +y=!1}this.p5(z) +return y}, +lo:function(a){return this.O4(a,null)}, +gu:function(a){var z=this.DG() +z=H.J(new P.zQ(z,z.f,null,null),[null]) +z.b=z.Q.d +return z}, +aN:function(a,b){this.DG().aN(0,b)}, +ez:function(a,b){var z=this.DG() +return H.J(new H.xy(z,b),[H.Kp(z,0),null])}, +gl0:function(a){return this.DG().Q===0}, +gor:function(a){return this.DG().Q!==0}, +gv:function(a){return this.DG().Q}, +tg:function(a,b){return this.DG().tg(0,b)}, +Zt:function(a){return this.DG().tg(0,a)?a:null}, +h:function(a,b){return this.OS(new P.GE(b))}, +Rz:function(a,b){var z,y +z=this.DG() +y=z.Rz(0,b) +this.p5(z) +return y}, +grZ:function(a){var z=this.DG() +return z.grZ(z)}, +OS:function(a){var z,y +z=this.DG() +y=a.$1(z) +this.p5(z) +return y}, +$isqC:1}, +GE:{ +"^":"r:2;Q", +$1:function(a){return a.h(0,this.Q)}}}],["","",,B,{ +"^":"", +RX:function(){var z,y,x,w,v,u,t,s,r,q,p +z=P.uo() +y=$.Ef() +x=$.wE() +if(y==null?x==null:y===x){y=P.hK(".") +w=y.c +if(w.length!==0){if(y.Q!=null){v=y.d +u=y.gJf(y) +t=y.a!=null?y.gtp(y):null}else{v="" +u=null +t=null}s=z.mE(y.b) +r=y.e +if(r!=null);else r=null}else{w=z.c +if(y.Q!=null){v=y.d +u=y.gJf(y) +t=P.Ec(y.a!=null?y.gtp(y):null,w) +s=z.mE(y.b) +r=y.e +if(r!=null);else r=null}else{x=y.b +if(x===""){s=z.b +r=y.e +if(r!=null);else r=z.e}else{s=C.xB.nC(x,"/")?z.mE(x):z.mE(z.Kf(z.b,x)) +r=y.e +if(r!=null);else r=null}v=z.d +u=z.Q +t=z.a}}q=y.f +if(q!=null);else q=null +return new P.iD(u,t,s,w,v,r,q,null,null).X(0)}else{p=z.t4() +return C.xB.Nj(p,0,p.length-1)}}}],["","",,F,{ +"^":"", +K5:function(a,b){var z,y,x,w,v,u +for(z=1;z<8;++z){if(b[z]==null||b[z-1]!=null)continue +for(y=8;y>=1;y=x){x=y-1 +if(b[x]!=null)break}w=new P.Rn("") +v=a+"(" +w.Q=v +u=new H.bX(b,0,y) +u.$builtinTypeInfo=[H.Kp(b,0)] +if(y<0)H.vh(P.TE(y,0,null,"end",null)) +if(0>y)H.vh(P.TE(0,0,y,"start",null)) +u=new H.A8(u,new F.No()) +u.$builtinTypeInfo=[null,null] +v+=u.zV(0,", ") +w.Q=v +w.Q=v+("): part "+(z-1)+" was null, but part "+z+" was not.") +throw H.b(P.p(w.X(0)))}}, +jX:{ +"^":"a;Q,a", +q7:function(a,b,c,d,e,f,g,h,i){var z=[b,c,d,e,f,g,h,i] +F.K5("join",z) +return this.IP(H.J(new H.U5(z,new F.Mi()),[H.Kp(z,0)]))}, +IP:function(a){var z,y,x,w,v,u,t,s,r,q +z=new P.Rn("") +for(y=H.J(new H.U5(a,new F.q7()),[H.W8(a,"mW",0)]),y=H.J(new H.SO(J.Nx(y.Q),y.a),[H.Kp(y,0)]),x=this.Q,w=y.Q,v=!1,u=!1;y.D();){t=w.gk() +if(x.hK(t)&&u){s=Q.lo(t,x) +r=z.Q +r=r.charCodeAt(0)==0?r:r +r=C.xB.Nj(r,0,x.Yr(r)) +s.a=r +if(x.ds(r)){r=s.d +q=x.gmI() +if(0>=r.length)return H.e(r,0) +r[0]=q}z.Q="" +z.Q+=s.X(0)}else if(x.Yr(t)>0){u=!x.hK(t) +z.Q="" +z.Q+=H.d(t)}else{r=J.U6(t) +if(J.vU(r.gv(t),0)&&x.Ud(r.p(t,0))===!0);else if(v)z.Q+=x.gmI() +z.Q+=H.d(t)}v=x.ds(t)}y=z.Q +return y.charCodeAt(0)==0?y:y}, +Fr:function(a,b){var z,y,x +z=Q.lo(b,this.Q) +y=z.c +y=H.J(new H.U5(y,new F.Qt()),[H.Kp(y,0)]) +y=P.z(y,!0,H.W8(y,"mW",0)) +z.c=y +x=z.a +if(x!=null)C.Nm.aP(y,0,x) +return z.c}, +o5:function(a){var z=Q.lo(a,this.Q) +z.p3() +return z.X(0)}, +j2:function(a,b){var z,y,x,w,v +b=B.RX() +z=this.Q +if(z.Yr(b)<=0&&z.Yr(a)>0)return this.o5(a) +if(z.Yr(a)<=0||z.hK(a))a=this.q7(0,B.RX(),a,null,null,null,null,null,null) +if(z.Yr(a)<=0&&z.Yr(b)>0)throw H.b(E.I7("Unable to find a path to \""+a+"\" from \""+b+"\".")) +y=Q.lo(b,z) +y.p3() +x=Q.lo(a,z) +x.p3() +w=y.c +if(w.length>0&&J.mG(w[0],"."))return x.X(0) +if(!J.mG(y.a,x.a)){w=y.a +if(!(w==null||x.a==null)){w=J.Mz(w) +H.Yx("\\") +w=H.ys(w,"/","\\") +v=J.Mz(x.a) +H.Yx("\\") +v=w!==H.ys(v,"/","\\") +w=v}else w=!0}else w=!1 +if(w)return x.X(0) +while(!0){w=y.c +if(w.length>0){v=x.c +w=v.length>0&&J.mG(w[0],v[0])}else w=!1 +if(!w)break +C.Nm.W4(y.c,0) +C.Nm.W4(y.d,1) +C.Nm.W4(x.c,0) +C.Nm.W4(x.d,1)}w=y.c +if(w.length>0&&J.mG(w[0],".."))throw H.b(E.I7("Unable to find a path to \""+a+"\" from \""+b+"\".")) +C.Nm.UG(x.c,0,P.O8(y.c.length,"..",null)) +w=x.d +if(0>=w.length)return H.e(w,0) +w[0]="" +C.Nm.UG(w,1,P.O8(y.c.length,z.gmI(),null)) +z=x.c +w=z.length +if(w===0)return"." +if(w>1&&J.mG(C.Nm.grZ(z),".")){z=x.c +if(0>=z.length)return H.e(z,0) +z.pop() +z=x.d +C.Nm.mv(z) +C.Nm.mv(z) +C.Nm.h(z,"")}x.a="" +x.Ix() +return x.X(0)}, +by:function(a){return this.j2(a,null)}, +D8:function(a){var z,y,x,w +if(typeof a==="string")a=P.hK(a) +if(a.gFi()==="file"){z=this.Q +y=$.wE() +y=z==null?y==null:z===y +z=y}else z=!1 +if(z)return a.X(0) +z=a.c +if(z!=="file")if(z!==""){z=this.Q +y=$.wE() +y=z==null?y!=null:z!==y +z=y}else z=!1 +else z=!1 +if(z)return a.X(0) +x=this.o5(this.Q.QD(a)) +w=this.by(x) +return this.Fr(0,w).length>this.Fr(0,x).length?x:w}}, +Mi:{ +"^":"r:2;", +$1:function(a){return a!=null}}, +q7:{ +"^":"r:2;", +$1:function(a){return!J.mG(a,"")}}, +Qt:{ +"^":"r:2;", +$1:function(a){return J.FN(a)!==!0}}, +No:{ +"^":"r:2;", +$1:function(a){return a==null?"null":"\""+H.d(a)+"\""}}}],["","",,E,{ +"^":"", +fv:{ +"^":"OO;", +xZ:function(a){var z=this.Yr(a) +if(z>0)return J.Nj(a,0,z) +return this.hK(a)?J.Tf(a,0):null}}}],["","",,Q,{ +"^":"", +v5:{ +"^":"a;Q,a,b,c,d", +Ix:function(){var z,y +while(!0){z=this.c +if(!(z.length!==0&&J.mG(C.Nm.grZ(z),"")))break +z=this.c +if(0>=z.length)return H.e(z,0) +z.pop() +C.Nm.mv(this.d)}z=this.d +y=z.length +if(y>0)z[y-1]=""}, +p3:function(){var z,y,x,w,v,u +z=[] +for(y=this.c,y=H.J(new H.a7(y,y.length,0,null),[H.Kp(y,0)]),x=0;y.D();){w=y.c +v=J.t(w) +if(v.m(w,".")||v.m(w,""));else if(v.m(w,".."))if(z.length>0)z.pop() +else ++x +else z.push(w)}if(this.a==null)C.Nm.UG(z,0,P.O8(x,"..",null)) +if(z.length===0&&this.a==null)z.push(".") +u=P.dH(z.length,new Q.qR(this),!0,null) +y=this.a +C.Nm.aP(u,0,y!=null&&z.length>0&&this.Q.ds(y)?this.Q.gmI():"") +this.c=z +this.d=u +y=this.a +if(y!=null&&this.Q===$.ep())this.a=J.JA(y,"/","\\") +this.Ix()}, +X:function(a){var z,y,x +z=new P.Rn("") +y=this.a +if(y!=null)z.Q=H.d(y) +for(x=0;x=y.length)return H.e(y,x) +z.Q+=H.d(y[x]) +y=this.c +if(x>=y.length)return H.e(y,x) +z.Q+=H.d(y[x])}y=z.Q+=H.d(C.Nm.grZ(this.d)) +return y.charCodeAt(0)==0?y:y}, +static:{lo:function(a,b){var z,y,x,w,v,u,t,s +z=b.xZ(a) +y=b.hK(a) +if(z!=null)a=J.D8(a,J.wS(z)) +x=[] +w=[] +v=J.U6(a) +if(v.gor(a)&&b.r4(v.O2(a,0))){w.push(v.p(a,0)) +u=1}else{w.push("") +u=0}t=u +while(!0){s=v.gv(a) +if(typeof s!=="number")return H.o(s) +if(!(t=a.length)return H.e(a,t) +w.push(a[t]) +u=t+1}++t}s=v.gv(a) +if(typeof s!=="number")return H.o(s) +if(u", +X:function(a){return"PathException: "+this.Q}, +static:{I7:function(a){return new E.dv(a)}}}}],["","",,S,{ +"^":"", +Rh:function(){var z,y,x,w,v,u,t,s +if(P.uo().c!=="file")return $.wE() +if(!C.xB.Tc(P.uo().b,"/"))return $.wE() +z=P.Wf("",0) +y=P.ua("",0,0) +x=P.L7(null,0,0,!1) +w=P.LE(null,0,0,null) +v=P.UJ(null,0,0) +u=P.Ec(null,z) +t=z==="file" +if(x==null)s=y.length!==0||u!=null||t +else s=!1 +if(s)x="" +if(new P.iD(x,u,P.fM("a/b",0,3,null,x!=null,t),z,y,w,v,null,null).t4()==="a\\b")return $.ep() +return $.KL()}, +OO:{ +"^":"a;", +X:function(a){return this.goc(this)}}}],["","",,Z,{ +"^":"", +OF:{ +"^":"fv;oc:Q>,mI:a<,b,c,d,e,f", +Ud:function(a){return J.kE(a,"/")}, +r4:function(a){return a===47}, +ds:function(a){var z=J.U6(a) +return z.gor(a)&&z.O2(a,J.D5(z.gv(a),1))!==47}, +Yr:function(a){var z=J.U6(a) +if(z.gor(a)&&z.O2(a,0)===47)return 1 +return 0}, +hK:function(a){return!1}, +QD:function(a){var z=a.c +if(z===""||z==="file")return P.pE(a.b,C.dy,!1) +throw H.b(P.p("Uri "+a.X(0)+" must have scheme 'file:'."))}}}],["","",,E,{ +"^":"", +ru:{ +"^":"fv;oc:Q>,mI:a<,b,c,d,e,f", +Ud:function(a){return J.kE(a,"/")}, +r4:function(a){return a===47}, +ds:function(a){var z=J.U6(a) +if(z.gl0(a)===!0)return!1 +if(z.O2(a,J.D5(z.gv(a),1))!==47)return!0 +return C.xB.Tc(a,"://")&&this.Yr(a)===a.length}, +Yr:function(a){var z,y +z=J.U6(a) +if(z.gl0(a)===!0)return 0 +if(z.O2(a,0)===47)return 1 +y=C.xB.OY(a,"/") +if(y>0&&C.xB.Qi(a,"://",y-1)){y=C.xB.XU(a,"/",y+2) +if(y>0)return y +return a.length}return 0}, +hK:function(a){var z=J.U6(a) +return z.gor(a)&&z.O2(a,0)===47}, +QD:function(a){return a.X(0)}}}],["","",,T,{ +"^":"", +IV:{ +"^":"fv;oc:Q>,mI:a<,b,c,d,e,f", +Ud:function(a){return J.kE(a,"/")}, +r4:function(a){return a===47||a===92}, +ds:function(a){var z=J.U6(a) +if(z.gl0(a)===!0)return!1 +z=z.O2(a,J.D5(z.gv(a),1)) +return!(z===47||z===92)}, +Yr:function(a){var z,y +z=J.U6(a) +if(z.gl0(a)===!0)return 0 +if(z.O2(a,0)===47)return 1 +if(C.xB.O2(a,0)===92){z=a.length +if(z<2||C.xB.O2(a,1)!==92)return 1 +y=C.xB.XU(a,"\\",2) +if(y>0){y=C.xB.XU(a,"\\",y+1) +if(y>0)return y}return z}if(a.length<3)return 0 +z=C.xB.O2(a,0) +if(!(z>=65&&z<=90))z=z>=97&&z<=122 +else z=!0 +if(!z)return 0 +if(C.xB.O2(a,1)!==58)return 0 +z=C.xB.O2(a,2) +if(!(z===47||z===92))return 0 +return 3}, +hK:function(a){return this.Yr(a)===1}, +QD:function(a){var z,y +z=a.c +if(z!==""&&z!=="file")throw H.b(P.p("Uri "+a.X(0)+" must have scheme 'file:'.")) +y=a.b +if(a.gJf(a)===""){if(C.xB.nC(y,"/")){H.Yx("") +H.fI(0) +P.wA(0,0,y.length,"startIndex",null) +y=H.bR(y,"/","",0)}}else y="\\\\"+H.d(a.gJf(a))+y +H.Yx("\\") +return P.pE(H.ys(y,"/","\\"),C.dy,!1)}}}],["","",,F,{ +"^":"", +Iq:[function(){var z=0,y=new P.Z(),x,w=2,v,u +function body(a,b){if(a===1){v=b +z=w}while(true)switch(z){case 0:u=F.S +z=3 +return H.U(W.X("messages.json",null,null),body,y) +case 3:x=u(b) +z=1 +break +case 1:return H.U(x,0,y,null) +case 2:return H.U(v,1,y)}}return H.U(null,body,y,null)},"$0","f8",0,0,0], +S:function(a){var z,y,x,w +z=P.A(null,null) +new F.ty(z).ai(X.H3(C.xr.kV(a))) +if(z.gl0(z))return +y=document.createElement("div",null) +J.pP(y).h(0,"menu") +x=document.createElement("div",null) +J.pP(x).h(0,"content") +w=document.createElement("div",null) +J.pP(w).h(0,"dev-compiler-messages") +w.appendChild(y) +w.appendChild(x) +z.aN(0,new F.vQ(y,x,new F.p9(null),new F.p9(null))) +document.body.appendChild(w)}, +m7:function(a){return J.Yr(a,$.KO(),new F.Rb())}, +vQ:{ +"^":"r:13;Q,a,b,c", +$2:function(a,b){var z,y,x,w,v,u,t,s,r,q,p,o,n,m,l +z=document.createElement("div",null) +J.pP(z).h(0,a) +y=J.U6(b) +x=W.U9("
"+H.d(a)+" ("+H.d(y.gv(b))+")
",null,null) +this.Q.appendChild(x) +this.a.appendChild(z) +w=J.Vg(x) +H.J(new W.xC(0,w.Q,w.a,W.aF(new F.IL(this.b,this.c,z,x)),w.b),[H.Kp(w,0)]).DN() +for(y=y.gu(b);y.D();){v=y.gk() +w=J.R(v) +u=w.gG1(v) +t=$.dD() +t.toString +s=t.b5(u,0,J.wS(u)) +r=F.m7(s==null?u:s) +q=w.gmO(v) +w="
"+r+"
" +if(q!=null){u=J.cW(q) +p=u.Q +u="
"+(H.d(p==null?"unknown source":p)+":"+(u.b+1)+":"+H.d(J.WB(u.c,1)))+"
" +o=q.b +s=t.b5(o,0,J.wS(o)) +w+=u+H.d(s==null?o:s)+"
"}w+="" +w=w.charCodeAt(0)==0?w:w +u=[] +u.$builtinTypeInfo=[W.kF] +u.push(W.Tw(null)) +u.push(W.Bl()) +u.push(W.GA(new F.qv(),["A::accesskey","A::coords","A::hreflang","A::name","A::shape","A::tabindex","A::target","A::type","FORM::accept","FORM::autocomplete","FORM::enctype","FORM::method","FORM::name","FORM::novalidate","FORM::target"],["A","FORM"],["A::href","FORM::action"])) +n=W.U9(w,null,new W.vD(u)) +z.appendChild(n) +m=J.c1(n,"div.text") +w=J.Vg(m) +u=w.a +t=w.b +o=new W.xC(0,w.Q,u,W.aF(new F.IX(m)),t) +o.$builtinTypeInfo=[H.Kp(w,0)] +w=o.c +l=w!=null +if(l&&o.Q<=0){o=o.a +o.toString +if(l)J.F8(o,u,w,t)}}}}, +IL:{ +"^":"r:2;Q,a,b,c", +$1:function(a){this.Q.Nm(0,this.c) +this.a.Nm(0,this.b)}}, +IX:{ +"^":"r:2;Q", +$1:function(a){var z=this.Q +if(J.mG(J.G0(a),z))J.pP(z).lo("expanded")}}, +p9:{ +"^":"a;Q", +Nm:function(a,b){var z=this.Q +if(z==null?b==null:z===b)this.Q=null +else{if(z!=null)J.pP(z).Rz(0,"active") +this.Q=b}J.pP(b).lo("active")}}, +Rb:{ +"^":"r:2;", +$1:function(a){return""+H.d(a.Fk(0))+""}}, +qv:{ +"^":"a;", +Dt:function(a){return!0}}, +ty:{ +"^":"zv;Q", +IR:function(a){var z,y +z=J.Mz(a.a) +y=this.Q +y.to(z,new F.ct()) +J.i4(y.p(0,z),a)}}, +ct:{ +"^":"r:0;", +$0:function(){return[]}}},1],["","",,O,{ +"^":"", +SL:{ +"^":"a;Q,a,b,c", +gRo:function(){var z=this.Q +return H.d(z==null?"unknown source":z)+":"+(this.b+1)+":"+H.d(J.WB(this.c,1))}, +fH:function(a){var z,y +z=this.Q +y=a.Q +if(!J.mG(z,y))throw H.b(P.p("Source URLs \""+H.d(z)+"\" and \""+H.d(y)+"\" don't match.")) +return J.dX(J.D5(this.a,a.a))}, +m:function(a,b){if(b==null)return!1 +return b instanceof O.SL&&J.mG(this.Q,b.Q)&&J.mG(this.a,b.a)}, +giO:function(a){var z,y +z=J.v1(this.Q) +y=this.a +if(typeof y!=="number")return H.o(y) +return z+y}, +X:function(a){return"<"+H.d(new H.cu(H.dJ(this),null))+": "+H.d(this.a)+" "+this.gRo()+">"}, +dl:function(a,b,c,d){if(J.UN(this.a,0))throw H.b(P.C3("Offset may not be negative, was "+H.d(a)+".")) +else if(J.UN(this.c,0))throw H.b(P.C3("Column may not be negative, was "+H.d(b)+"."))}, +static:{XR:function(a,b,c,d){var z=typeof d==="string"?P.hK(d):d +z=new O.SL(z,a,0,a) +z.dl(a,b,c,d) +return z}}}}],["","",,T,{ +"^":"", +m5:{ +"^":"a;"}, +Y5:{ +"^":"Jo;J:Q>,eX:a<,b", +Y9:function(a,b,c){var z,y,x,w +z=this.a +y=z.Q +x=this.Q +w=x.Q +if(!J.mG(y,w))throw H.b(P.p("Source URLs \""+H.d(w)+"\" and \""+H.d(y)+"\" don't match.")) +else if(J.UN(z.a,x.a))throw H.b(P.p("End "+z.X(0)+" must come after start "+x.X(0)+".")) +else{y=this.b +if(!J.mG(J.wS(y),x.fH(z)))throw H.b(P.p("Text \""+H.d(y)+"\" must be "+H.d(x.fH(z))+" characters long."))}}}}],["","",,Y,{ +"^":"", +Jo:{ +"^":"a;", +gv:function(a){return J.D5(this.geX().a,this.Q.a)}, +XA:[function(a,b,c){var z,y,x,w +z=this.Q +y="line "+(this.gJ(this).b+1)+", column "+H.d(J.WB(z.c,1)) +x=z.Q +if(x!=null)y+=" of "+$.LX().D8(x) +y+=": "+H.d(b) +if(J.mG(J.D5(this.a.a,z.a),0))return y.charCodeAt(0)==0?y:y +z=y+"\n" +w=C.Nm.gFV(J.Gn(this.b,"\n")) +z=z+H.d(w)+"\n"+C.xB.R("^",J.wS(w)) +return z.charCodeAt(0)==0?z:z},function(a,b){return this.XA(a,b,null)},"Xj","$2$color","$1","gG1",2,3,25,38], +m:function(a,b){var z +if(b==null)return!1 +z=J.t(b) +return!!z.$ism5&&this.gJ(this).m(0,z.gJ(b))&&this.a.m(0,b.geX())}, +giO:function(a){var z,y,x,w +z=this.gJ(this) +y=J.v1(z.Q) +z=z.a +if(typeof z!=="number")return H.o(z) +x=this.a +w=J.v1(x.Q) +x=x.a +if(typeof x!=="number")return H.o(x) +return y+z+31*(w+x)}, +X:function(a){var z,y,x +z="<"+H.d(new H.cu(H.dJ(this),null))+": from " +y=this.gJ(this) +x=this.a +return z+("<"+H.d(new H.cu(H.dJ(y),null))+": "+H.d(y.a)+" "+y.gRo()+">")+" to "+("<"+H.d(new H.cu(H.dJ(x),null))+": "+H.d(x.a)+" "+x.gRo()+">")+" \""+H.d(this.b)+"\">"}, +$ism5:1}}],] +parseReflectionData(dart) +J.Qc=function(a){if(typeof a=="number")return J.F.prototype +if(typeof a=="string")return J.E.prototype +if(a==null)return a +if(!(a instanceof P.a))return J.kd.prototype +return a} +J.R=function(a){if(a==null)return a +if(typeof a!="object")return a +if(a instanceof P.a)return a +return J.ks(a)} +J.U6=function(a){if(typeof a=="string")return J.E.prototype +if(a==null)return a +if(a.constructor==Array)return J.G.prototype +if(typeof a!="object")return a +if(a instanceof P.a)return a +return J.ks(a)} +J.Wx=function(a){if(typeof a=="number")return J.F.prototype +if(a==null)return a +if(!(a instanceof P.a))return J.kd.prototype +return a} +J.rY=function(a){if(typeof a=="string")return J.E.prototype +if(a==null)return a +if(!(a instanceof P.a))return J.kd.prototype +return a} +J.t=function(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.im.prototype +return J.VA.prototype}if(typeof a=="string")return J.E.prototype +if(a==null)return J.PE.prototype +if(typeof a=="boolean")return J.yE.prototype +if(a.constructor==Array)return J.G.prototype +if(typeof a!="object")return a +if(a instanceof P.a)return a +return J.ks(a)} +J.w1=function(a){if(a==null)return a +if(a.constructor==Array)return J.G.prototype +if(typeof a!="object")return a +if(a instanceof P.a)return a +return J.ks(a)} +J.D5=function(a,b){if(typeof a=="number"&&typeof b=="number")return a-b +return J.Wx(a).T(a,b)} +J.D8=function(a,b){return J.rY(a).yn(a,b)} +J.DA=function(a){return J.R(a).goc(a)} +J.F8=function(a,b,c,d){return J.R(a).v0(a,b,c,d)} +J.FN=function(a){return J.U6(a).gl0(a)} +J.G0=function(a){return J.R(a).gK(a)} +J.Gn=function(a,b){return J.rY(a).Fr(a,b)} +J.Gw=function(a,b){return J.Wx(a).WZ(a,b)} +J.IC=function(a,b){return J.rY(a).O2(a,b)} +J.JA=function(a,b,c){return J.rY(a).h8(a,b,c)} +J.Lz=function(a){return J.t(a).X(a)} +J.M=function(a){return J.R(a).gil(a)} +J.MQ=function(a){return J.w1(a).grZ(a)} +J.Mp=function(a){return J.w1(a).wg(a)} +J.Mz=function(a){return J.rY(a).hc(a)} +J.NT=function(a,b,c){return J.U6(a).eM(a,b,c)} +J.Nj=function(a,b,c){return J.rY(a).Nj(a,b,c)} +J.Nu=function(a,b,c,d){return J.R(a).Ci(a,b,c,d)} +J.Nx=function(a){return J.w1(a).gu(a)} +J.Tf=function(a,b){if(a.constructor==Array||typeof a=="string"||H.Xt(a,a[init.dispatchPropertyName]))if(b>>>0===b&&bb +return J.Wx(a).A(a,b)} +J.w8=function(a){return J.R(a).gkc(a)} +J.wS=function(a){return J.U6(a).gv(a)} +J.xG=function(a,b){return J.R(a).aM(a,b)} +I.uL=function(a){a.immutable$list=Array +a.fixed$length=Array +return a} +C.Dt=W.zU.prototype +C.Nm=J.G.prototype +C.jn=J.im.prototype +C.jN=J.PE.prototype +C.CD=J.F.prototype +C.xB=J.E.prototype +C.NA=H.V6.prototype +C.t5=W.BH.prototype +C.ZQ=J.iC.prototype +C.vB=J.kd.prototype +C.KZ=new H.hJ() +C.Eq=new P.k5() +C.Wj=new P.yR() +C.NU=new P.R8() +C.RT=new P.a6(0) +C.Hw=new P.fU("unknown",!0,!0,!0,!0) +C.Mc=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +C.lR=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +C.w2=function getTagFallback(o) { + var constructor = o.constructor; + if (typeof constructor == "function") { + var name = constructor.name; + if (typeof name == "string" && + name.length > 2 && + name !== "Object" && + name !== "Function.prototype") { + return name; + } + } + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +C.XQ=function(hooks) { return hooks; } + +C.ur=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var ua = navigator.userAgent; + if (ua.indexOf("DumpRenderTree") >= 0) return hooks; + if (ua.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +C.Jh=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +C.M1=function() { + function typeNameInChrome(o) { + var constructor = o.constructor; + if (constructor) { + var name = constructor.name; + if (name) return name; + } + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = Object.prototype.toString.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof navigator == "object"; + return { + getTag: typeNameInChrome, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +C.hQ=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +C.xr=new P.by(null,null) +C.A3=new P.QM(null) +C.Gb=H.J(I.uL([127,2047,65535,1114111]),[P.KN]) +C.zm=H.J(I.uL(["*::class","*::dir","*::draggable","*::hidden","*::id","*::inert","*::itemprop","*::itemref","*::itemscope","*::lang","*::spellcheck","*::title","*::translate","A::accesskey","A::coords","A::hreflang","A::name","A::shape","A::tabindex","A::target","A::type","AREA::accesskey","AREA::alt","AREA::coords","AREA::nohref","AREA::shape","AREA::tabindex","AREA::target","AUDIO::controls","AUDIO::loop","AUDIO::mediagroup","AUDIO::muted","AUDIO::preload","BDO::dir","BODY::alink","BODY::bgcolor","BODY::link","BODY::text","BODY::vlink","BR::clear","BUTTON::accesskey","BUTTON::disabled","BUTTON::name","BUTTON::tabindex","BUTTON::type","BUTTON::value","CANVAS::height","CANVAS::width","CAPTION::align","COL::align","COL::char","COL::charoff","COL::span","COL::valign","COL::width","COLGROUP::align","COLGROUP::char","COLGROUP::charoff","COLGROUP::span","COLGROUP::valign","COLGROUP::width","COMMAND::checked","COMMAND::command","COMMAND::disabled","COMMAND::label","COMMAND::radiogroup","COMMAND::type","DATA::value","DEL::datetime","DETAILS::open","DIR::compact","DIV::align","DL::compact","FIELDSET::disabled","FONT::color","FONT::face","FONT::size","FORM::accept","FORM::autocomplete","FORM::enctype","FORM::method","FORM::name","FORM::novalidate","FORM::target","FRAME::name","H1::align","H2::align","H3::align","H4::align","H5::align","H6::align","HR::align","HR::noshade","HR::size","HR::width","HTML::version","IFRAME::align","IFRAME::frameborder","IFRAME::height","IFRAME::marginheight","IFRAME::marginwidth","IFRAME::width","IMG::align","IMG::alt","IMG::border","IMG::height","IMG::hspace","IMG::ismap","IMG::name","IMG::usemap","IMG::vspace","IMG::width","INPUT::accept","INPUT::accesskey","INPUT::align","INPUT::alt","INPUT::autocomplete","INPUT::checked","INPUT::disabled","INPUT::inputmode","INPUT::ismap","INPUT::list","INPUT::max","INPUT::maxlength","INPUT::min","INPUT::multiple","INPUT::name","INPUT::placeholder","INPUT::readonly","INPUT::required","INPUT::size","INPUT::step","INPUT::tabindex","INPUT::type","INPUT::usemap","INPUT::value","INS::datetime","KEYGEN::disabled","KEYGEN::keytype","KEYGEN::name","LABEL::accesskey","LABEL::for","LEGEND::accesskey","LEGEND::align","LI::type","LI::value","LINK::sizes","MAP::name","MENU::compact","MENU::label","MENU::type","METER::high","METER::low","METER::max","METER::min","METER::value","OBJECT::typemustmatch","OL::compact","OL::reversed","OL::start","OL::type","OPTGROUP::disabled","OPTGROUP::label","OPTION::disabled","OPTION::label","OPTION::selected","OPTION::value","OUTPUT::for","OUTPUT::name","P::align","PRE::width","PROGRESS::max","PROGRESS::min","PROGRESS::value","SELECT::autocomplete","SELECT::disabled","SELECT::multiple","SELECT::name","SELECT::required","SELECT::size","SELECT::tabindex","SOURCE::type","TABLE::align","TABLE::bgcolor","TABLE::border","TABLE::cellpadding","TABLE::cellspacing","TABLE::frame","TABLE::rules","TABLE::summary","TABLE::width","TBODY::align","TBODY::char","TBODY::charoff","TBODY::valign","TD::abbr","TD::align","TD::axis","TD::bgcolor","TD::char","TD::charoff","TD::colspan","TD::headers","TD::height","TD::nowrap","TD::rowspan","TD::scope","TD::valign","TD::width","TEXTAREA::accesskey","TEXTAREA::autocomplete","TEXTAREA::cols","TEXTAREA::disabled","TEXTAREA::inputmode","TEXTAREA::name","TEXTAREA::placeholder","TEXTAREA::readonly","TEXTAREA::required","TEXTAREA::rows","TEXTAREA::tabindex","TEXTAREA::wrap","TFOOT::align","TFOOT::char","TFOOT::charoff","TFOOT::valign","TH::abbr","TH::align","TH::axis","TH::bgcolor","TH::char","TH::charoff","TH::colspan","TH::headers","TH::height","TH::nowrap","TH::rowspan","TH::scope","TH::valign","TH::width","THEAD::align","THEAD::char","THEAD::charoff","THEAD::valign","TR::align","TR::bgcolor","TR::char","TR::charoff","TR::valign","TRACK::default","TRACK::kind","TRACK::label","TRACK::srclang","UL::compact","UL::type","VIDEO::controls","VIDEO::height","VIDEO::loop","VIDEO::mediagroup","VIDEO::muted","VIDEO::preload","VIDEO::width"]),[P.I]) +C.ak=I.uL([0,0,32776,33792,1,10240,0,0]) +C.o5=I.uL([0,0,65490,45055,65535,34815,65534,18431]) +C.mK=I.uL([0,0,26624,1023,65534,2047,65534,2047]) +C.Hj=I.uL(["/","\\"]) +C.mI=I.uL(["/"]) +C.xD=H.J(I.uL([]),[P.I]) +C.to=I.uL([0,0,32722,12287,65534,34815,65534,18431]) +C.F3=I.uL([0,0,24576,1023,65534,34815,65534,18431]) +C.ea=I.uL([0,0,32754,11263,65534,34815,65534,18431]) +C.Wd=I.uL([0,0,65490,12287,65535,34815,65534,18431]) +C.ZJ=I.uL([0,0,32722,12287,65535,34815,65534,18431]) +C.nm=H.J(I.uL(["bind","if","ref","repeat","syntax"]),[P.I]) +C.BI=H.J(I.uL(["A::href","AREA::href","BLOCKQUOTE::cite","BODY::background","COMMAND::icon","DEL::cite","FORM::action","IMG::src","INPUT::src","INS::cite","Q::cite","VIDEO::poster"]),[P.I]) +C.dy=new P.u5(!1) +{init.isHunkLoaded=function(a){return!!$dart_deferred_initializers[a]} +init.deferredInitialized=new Object(null) +init.isHunkInitialized=function(a){return init.deferredInitialized[a]} +init.initializeLoadedHunk=function(a){$dart_deferred_initializers[a](S0,$) +init.deferredInitialized[a]=true}}init.deferredLibraryUris={} +init.deferredLibraryHashes={} +$.Vz=null +$.kv=1 +$.te="$cachedFunction" +$.eb="$cachedInvocation" +$.yj=0 +$.bf=null +$.P4=null +$.lc=!1 +$.N=null +$.TX=null +$.x7=null +$.NF=null +$.vv=null +$.P=null +$.oK=null +$.S6=null +$.k8=null +$.mg=null +$.UD=!1 +$.X3=C.NU +$.Ss=0 +$.xo=null +$.BO=null +$.lt=null +$.EU=null +$.L4=null +$.EM=null +$.w5=null +$.PN=null +$.aj=null +I.$lazy($,"thisScript","Kb","Rs",function(){return H.Td()}) +I.$lazy($,"workerIds","rS","p6",function(){return H.J(new P.kM(null),[P.KN])}) +I.$lazy($,"noSuchMethodPattern","lm","WD",function(){return H.cM(H.S7({toString:function(){return"$receiver$"}}))}) +I.$lazy($,"notClosurePattern","k1","OI",function(){return H.cM(H.S7({$method$:null,toString:function(){return"$receiver$"}}))}) +I.$lazy($,"nullCallPattern","Re","PH",function(){return H.cM(H.S7(null))}) +I.$lazy($,"nullLiteralCallPattern","fN","D1",function(){return H.cM(function(){var $argumentsExpr$='$arguments$' +try{null.$method$($argumentsExpr$)}catch(z){return z.message}}())}) +I.$lazy($,"undefinedCallPattern","qi","rx",function(){return H.cM(H.S7(void 0))}) +I.$lazy($,"undefinedLiteralCallPattern","rZ","Kr",function(){return H.cM(function(){var $argumentsExpr$='$arguments$' +try{(void 0).$method$($argumentsExpr$)}catch(z){return z.message}}())}) +I.$lazy($,"nullPropertyPattern","BX","zO",function(){return H.cM(H.Mj(null))}) +I.$lazy($,"nullLiteralPropertyPattern","tt","Bi",function(){return H.cM(function(){try{null.$method$}catch(z){return z.message}}())}) +I.$lazy($,"undefinedPropertyPattern","dt","eA",function(){return H.cM(H.Mj(void 0))}) +I.$lazy($,"undefinedLiteralPropertyPattern","A7","ko",function(){return H.cM(function(){try{(void 0).$method$}catch(z){return z.message}}())}) +I.$lazy($,"scheduleImmediateClosure","lI","ej",function(){return P.xg()}) +I.$lazy($,"_toStringVisiting","nM","Ex",function(){return[]}) +I.$lazy($,"_allowedElements","zX","AM",function(){return P.tM(["A","ABBR","ACRONYM","ADDRESS","AREA","ARTICLE","ASIDE","AUDIO","B","BDI","BDO","BIG","BLOCKQUOTE","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIR","DIV","DL","DT","EM","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","I","IFRAME","IMG","INPUT","INS","KBD","LABEL","LEGEND","LI","MAP","MARK","MENU","METER","NAV","NOBR","OL","OPTGROUP","OPTION","OUTPUT","P","PRE","PROGRESS","Q","S","SAMP","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","SUB","SUMMARY","SUP","TABLE","TBODY","TD","TEXTAREA","TFOOT","TH","THEAD","TIME","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR"],null)}) +I.$lazy($,"_attributeValidators","or","NJ",function(){return P.A(null,null)}) +I.$lazy($,"context","eo","LX",function(){return new F.jX($.Ef(),null)}) +I.$lazy($,"posix","yr","KL",function(){return new Z.OF("posix","/",C.mI,P.nu("/",!0,!1),P.nu("[^/]$",!0,!1),P.nu("^/",!0,!1),null)}) +I.$lazy($,"windows","Mk","ep",function(){return new T.IV("windows","\\",C.Hj,P.nu("[/\\\\]",!0,!1),P.nu("[^/\\\\]$",!0,!1),P.nu("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])",!0,!1),P.nu("^[/\\\\](?![/\\\\])",!0,!1))}) +I.$lazy($,"url","aC","wE",function(){return new E.ru("url","/",C.mI,P.nu("/",!0,!1),P.nu("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$",!0,!1),P.nu("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*",!0,!1),P.nu("^/",!0,!1))}) +I.$lazy($,"platform","ls","Ef",function(){return S.Rh()}) +I.$lazy($,"_urlRegex","ED","KO",function(){return P.nu("http://[^ ]*",!0,!1)}) +I.$lazy($,"_escaper","tX","dD",function(){return new P.Rc(C.Hw)}) + +init.metadata=[{func:"NT"},{func:"X0",void:true},{func:"aB",args:[null]},{func:"bb",args:[null,P.Gz]},{func:"TS",args:[null,P.I]},{func:"uO",args:[P.I]},{func:"cO",args:[{func:"X0",void:true}]},{func:"Ns",void:true,args:[P.a],opt:[P.Gz]},{func:"Vx",void:true,args:[null],opt:[P.Gz]},{func:"BG",args:[null],opt:[null]},{func:"Uf",ret:P.a2},{func:"WK",args:[P.a2]},{func:"N5",void:true,args:[null,P.Gz]},{func:"bh",args:[null,null]},{func:"DR",ret:P.KN,args:[null,P.KN]},{func:"jt",void:true,args:[P.KN,P.KN]},{func:"lv",args:[P.wv,null]},{func:"Pt",ret:P.I,args:[P.KN]},{func:"N4",ret:P.a2,args:[P.KN]},{func:"Z9",ret:P.KN,args:[null,null]},{func:"xM",void:true,args:[P.I]},{func:"lu",void:true,args:[P.I],opt:[null]},{func:"BC",ret:P.KN,args:[P.KN,P.KN]},{func:"L8",args:[W.zU]},{func:"qu",void:true,args:[W.KV]},{func:"wv",ret:P.I,args:[P.I],named:{color:null}},{func:"f4",ret:P.I,args:[P.Od]},{func:"zs",ret:P.I,args:[P.I]},{func:"b1",void:true,args:[{func:"X0",void:true}]},{func:"Jg",void:true,args:[null]},{func:"BT",ret:P.a2,args:[null,null]},{func:"bX",ret:P.KN,args:[null]},{func:"E0",ret:P.a2,args:[P.a,P.a]},{func:"Gm",ret:P.KN,args:[P.a]},{func:"Vv",ret:P.a2,args:[W.cv,P.I,P.I,W.JQ]},{func:"jr",ret:X.GS,args:[P.w]},{func:"nZ",ret:X.q5,args:[P.w]},{func:"oJ",ret:X.bO,args:[P.w]},,];$=null +I = I.$finishIsolateConstructor(I) +$=new I() +function convertToFastObject(a){function MyClass(){}MyClass.prototype=a +new MyClass() +return a} +A = convertToFastObject(A) +B = convertToFastObject(B) +C = convertToFastObject(C) +D = convertToFastObject(D) +E = convertToFastObject(E) +F = convertToFastObject(F) +G = convertToFastObject(G) +H = convertToFastObject(H) +J = convertToFastObject(J) +K = convertToFastObject(K) +L = convertToFastObject(L) +M = convertToFastObject(M) +N = convertToFastObject(N) +O = convertToFastObject(O) +P = convertToFastObject(P) +Q = convertToFastObject(Q) +R = convertToFastObject(R) +S = convertToFastObject(S) +T = convertToFastObject(T) +U = convertToFastObject(U) +V = convertToFastObject(V) +W = convertToFastObject(W) +X = convertToFastObject(X) +Y = convertToFastObject(Y) +Z = convertToFastObject(Z) +function init(){I.p=Object.create(null) +init.allClasses=Object.create(null) +init.getTypeFromName=function(a){return init.allClasses[a]} +init.interceptorsByTag=Object.create(null) +init.leafTags=Object.create(null) +init.finishedClasses=Object.create(null) +I.$lazy=function(a,b,c,d,e){if(!init.lazies)init.lazies=Object.create(null) +init.lazies[c]=d +var z={} +var y={} +a[c]=z +a[d]=function(){var x=$[c] +try{if(x===z){$[c]=y +try{x=$[c]=e()}finally{if(x===z)$[c]=null}}else if(x===y)H.ag(b) +return x}finally{$[d]=function(){return this[c]}}}} +I.$finishIsolateConstructor=function(a){var z=a.p +function Isolate(){var y=Object.keys(z) +for(var x=0;x + + + + + + + + + + + + + diff --git a/pkg/dev_compiler/test/codegen/expect/server_mode/html_input.txt b/pkg/dev_compiler/test/codegen/expect/server_mode/html_input.txt new file mode 100644 index 000000000000..6552e292f7b4 --- /dev/null +++ b/pkg/dev_compiler/test/codegen/expect/server_mode/html_input.txt @@ -0,0 +1 @@ +// Messages from compiling html_input.html diff --git a/pkg/dev_compiler/test/codegen_test.dart b/pkg/dev_compiler/test/codegen_test.dart index ee89b60e199b..e80dcbdc5b23 100644 --- a/pkg/dev_compiler/test/codegen_test.dart +++ b/pkg/dev_compiler/test/codegen_test.dart @@ -21,8 +21,8 @@ import 'package:unittest/unittest.dart'; final ArgParser argParser = new ArgParser() ..addOption('dart-sdk', help: 'Dart SDK Path', defaultsTo: null) - ..addFlag( - 'dart-gen', abbr: 'd', help: 'Generate dart output', defaultsTo: false); + ..addFlag('dart-gen', + abbr: 'd', help: 'Generate dart output', defaultsTo: false); main(arguments) { if (arguments == null) arguments = []; @@ -56,9 +56,10 @@ main(arguments) { .map((f) => f.path) .where((p) => p.endsWith('.dart') && filePattern.hasMatch(p)); - compile(String entryPoint, String sdkPath, [bool checkSdk = false]) { + compile(String entryPoint, String sdkPath, + {bool checkSdk: false, bool serverMode: false}) { var options = new CompilerOptions( - outputDir: actualDir, + outputDir: serverMode ? path.join(actualDir, 'server_mode') : actualDir, useColors: false, outputDart: dartGen, formatOutput: dartGen, @@ -67,7 +68,8 @@ main(arguments) { cheapTestFormat: checkSdk, checkSdk: checkSdk, entryPointFile: entryPoint, - dartSdkPath: sdkPath); + dartSdkPath: sdkPath, + serverMode: serverMode); return new Compiler(options).run(); } var realSdk = getSdkDir(arguments).path; @@ -127,7 +129,7 @@ main(arguments) { var testSdk = dartGen ? path.join(testDir, '..', 'tool', 'input_sdk') : path.join(testDir, 'generated_sdk'); - var result = compile('dart:core', testSdk, true); + var result = compile('dart:core', testSdk, checkSdk: true); var outputDir = new Directory(path.join(actualDir, 'core')); var outFile = dartGen ? new File(path.join(actualDir, 'core/core')) @@ -153,6 +155,23 @@ main(arguments) { expect(outFile.existsSync(), success, reason: '${outFile.path} was created iff compilation succeeds'); }); + + test('devc jscodegen html_input.html server mode', () { + var filePath = path.join(inputDir, 'html_input.html'); + compilerMessages.writeln('// Messages from compiling html_input.html'); + + var result = compile(filePath, realSdk, serverMode: true); + var success = !result.failure; + + // Write compiler messages to disk. + new File(path.join(actualDir, 'server_mode', 'html_input.txt')) + .writeAsStringSync(compilerMessages.toString()); + + var outFile = + new File(path.join(actualDir, 'server_mode', 'html_input.html')); + expect(outFile.existsSync(), success, + reason: '${outFile.path} was created iff compilation succeeds'); + }); } } diff --git a/pkg/dev_compiler/test/dependency_graph_test.dart b/pkg/dev_compiler/test/dependency_graph_test.dart index d52f9db79f54..c34dd450cfa4 100644 --- a/pkg/dev_compiler/test/dependency_graph_test.dart +++ b/pkg/dev_compiler/test/dependency_graph_test.dart @@ -64,7 +64,7 @@ main() { testUriResolver = new TestUriResolver(testFiles); context = new TypeResolver.fromMock(mockSdkSources, options, otherResolvers: [testUriResolver]).context; - graph = new SourceGraph(context, new LogReporter()); + graph = new SourceGraph(context, new LogReporter(), options); }); group('HTML deps', () { @@ -553,10 +553,8 @@ main() { var node = nodeOf('/index3.html'); expectGraph(node, ''' index3.html - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); refreshStructureAndMarks(node, graph); expectGraph(node, ''' @@ -567,10 +565,8 @@ main() { | | |-- a10.dart [needs-rebuild] | |-- a5.dart [needs-rebuild] | |-- a6.dart (part) [needs-rebuild] - |-- dart_runtime.js [needs-rebuild] |-- harmony_feature_check.js [needs-rebuild] - |-- messages_widget.js [needs-rebuild] - |-- messages.css [needs-rebuild] + |-- dart_runtime.js [needs-rebuild] '''); }); @@ -585,10 +581,8 @@ main() { | | |-- a10.dart [needs-rebuild] | |-- a5.dart [needs-rebuild] | |-- a6.dart (part) [needs-rebuild] - |-- dart_runtime.js [needs-rebuild] |-- harmony_feature_check.js [needs-rebuild] - |-- messages_widget.js [needs-rebuild] - |-- messages.css [needs-rebuild] + |-- dart_runtime.js [needs-rebuild] '''); clearMarks(node); expectGraph(node, ''' @@ -599,10 +593,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); refreshStructureAndMarks(node, graph); @@ -614,10 +606,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -637,10 +627,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -663,11 +651,43 @@ main() { | | |-- a8.dart [needs-rebuild] [structure-changed] | | | |-- a8.dart... | |-- a6.dart (part) + |-- harmony_feature_check.js |-- dart_runtime.js + '''); + }); + }); + + group('server-mode', () { + setUp(() { + var options2 = new CompilerOptions(serverMode: true); + context = new TypeResolver.fromMock(mockSdkSources, options2, + otherResolvers: [testUriResolver]).context; + graph = new SourceGraph(context, new LogReporter(), options2); + }); + + test('messages widget is automatically included', () { + var node = nodeOf('/index3.html'); + expectGraph(node, ''' + index3.html |-- harmony_feature_check.js + |-- dart_runtime.js |-- messages_widget.js |-- messages.css '''); + refreshStructureAndMarks(node, graph); + expectGraph(node, ''' + index3.html [needs-rebuild] [structure-changed] + |-- a2.dart [needs-rebuild] [structure-changed] + | |-- a3.dart [needs-rebuild] + | |-- a4.dart [needs-rebuild] [structure-changed] + | | |-- a10.dart [needs-rebuild] + | |-- a5.dart [needs-rebuild] + | |-- a6.dart (part) [needs-rebuild] + |-- harmony_feature_check.js [needs-rebuild] + |-- dart_runtime.js [needs-rebuild] + |-- messages_widget.js [needs-rebuild] + |-- messages.css [needs-rebuild] + '''); }); }); @@ -699,10 +719,8 @@ main() { 'a4.dart', 'a5.dart', 'a2.dart', - 'dart_runtime.js', 'harmony_feature_check.js', - 'messages_widget.js', - 'messages.css', + 'dart_runtime.js', 'index3.html', ]); @@ -715,10 +733,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -869,10 +885,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); // Modify the file first: @@ -893,10 +907,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a2.source.contents.modificationTime++; @@ -927,10 +939,8 @@ main() { | |-- a6.dart | | |-- a5.dart | |-- a5.dart... - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -948,10 +958,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a2.source.contents.modificationTime++; @@ -973,10 +981,8 @@ main() { | | |-- a10.dart | |-- a6.dart | |-- a5.dart - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a6.source.contents.modificationTime++; @@ -993,10 +999,8 @@ main() { | |-- a6.dart | | |-- a5.dart | |-- a5.dart... - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -1014,10 +1018,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a2.source.contents.modificationTime++; @@ -1040,10 +1042,8 @@ main() { | |-- a4.dart | | |-- a10.dart | |-- a5.dart - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); @@ -1061,10 +1061,8 @@ main() { | | |-- a10.dart | |-- a5.dart | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a2.source.contents.modificationTime++; @@ -1086,10 +1084,8 @@ main() { | | |-- a10.dart | |-- a5.dart (part) | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); a5.source.contents.modificationTime++; @@ -1105,10 +1101,8 @@ main() { | | |-- a10.dart | |-- a5.dart (part) | |-- a6.dart (part) - |-- dart_runtime.js |-- harmony_feature_check.js - |-- messages_widget.js - |-- messages.css + |-- dart_runtime.js '''); }); });